MySQL 字符串转时间戳

在php等后台语言中想要将字符串转换成时间戳是非常方便的,但是在mysql中并没有直接提供相应的函数进行直接转换,或者说对于特殊的字符串转换效果并不理想。但是MySQL中存在丰富的时间处理函数,可以组合进行处理,以达到效果。
采用下面的方法可以将字符串转换成 Unix时间戳

SELECT unix_timestamp(str_to_date('2018年7月1日 9:00-10:30', '%Y年%m月%d日'));

解释:

1.将字符串使用str_to_date 转化成mysql时间,再由unix_timestamp 将mysql时间转换成 unix时间戳。

str_to_date 函数后面的第二个参数是想要格式化的字符串的格式,例如此处的参数是 “ ‘%Y年%m月%d日’”。那么在进行时间转化时,MySQL只取前面的字符串的 汉字 “年月日 ”部分,而后面的时间区间值不去理会。
2. unix_timestamp
将mysql的时间格式化成时间戳,如果传递给该函数的是有规则的字符串也可以直接格式化,不需要str_to_date的转换。

扩展:

SELECT str_to_date('2018年7月1日 9:08-10:30', '%Y年%m月%d日 %H:%i')

得到的结果是

  2018-07-01 09:08:00

可以看到str_to_date() 函数会根据第二个参数进行正则匹配第一个参数的字符串,并将结果替换成比较常见并且规则的 “-”、“:” 间隔。这时拿着这个字符串使用unix_timestamp() 函数进行格式化,就会得到和php等后端语言相通的unix时间戳。

你可能感兴趣的:(mysql)