MySQL时间戳格式和datediff

时间:2016-02-01 02:32:25

标签: mysql datediff

您好我正在为MySQL编写查询,现在我的数据库有一个包含此格式时间戳的列: 2015年7月14日上午7:57:49 ,但我需要使用DATEDIFF函数,那么如何将时间戳转换为如下格式: 2015-7-14 (或2015-07-14,我不确定哪一个是正确的;只是日期) ?

2 个答案:

答案 0 :(得分:1)

这应该将您的字符串转换为日期格式的日期,然后您可以在相关日期字段中使用DATEDIFF

  SELECT STR_TO_DATE(LEFT(t,LOCATE(' ',t) - 1), '%m/%d/%Y') FROM my_table;

LEFT函数将子字符串放在空格的左边,这只是你的日期,然后STR_TO_DATE会将该子字符串转换为系统可以使用的日期。

(不知道您的字段和表格名称,我使用了tmy_table。)

答案 1 :(得分:0)

你不需要。 MySQL 显示时间戳的方式与它们在内部存储的方式无关;只要它是TYPE TIMESTAMP或某种兼容类型,DATEDIFF()函数就会知道如何处理它。

TIMESTAMP实际上存储为一个非常大的整数,表示(我认为)从1970年1月1日午夜UTC开始的毫秒数。显示格式由系统全局变量确定,与实际值无关。

使用STR_TO_DATE()函数,从字符串转换为DATETIMETIMESTAMP实际上也非常简单;在您的情况下,format string将类似于

STR_TO_DATE('%c/%e/%Y %l:%i:%s %p', datecol)

虽然您可能需要进行一些实验才能使其正常工作。