您好我正在为MySQL编写查询,现在我的数据库有一个包含此格式时间戳的列: 2015年7月14日上午7:57:49 ,但我需要使用DATEDIFF函数,那么如何将时间戳转换为如下格式: 2015-7-14 (或2015-07-14,我不确定哪一个是正确的;只是日期) ?
答案 0 :(得分:1)
这应该将您的字符串转换为日期格式的日期,然后您可以在相关日期字段中使用DATEDIFF
:
SELECT STR_TO_DATE(LEFT(t,LOCATE(' ',t) - 1), '%m/%d/%Y') FROM my_table;
LEFT
函数将子字符串放在空格的左边,这只是你的日期,然后STR_TO_DATE
会将该子字符串转换为系统可以使用的日期。
(不知道您的字段和表格名称,我使用了t
和my_table
。)
答案 1 :(得分:0)
你不需要。 MySQL 显示时间戳的方式与它们在内部存储的方式无关;只要它是TYPE TIMESTAMP
或某种兼容类型,DATEDIFF()
函数就会知道如何处理它。
TIMESTAMP实际上存储为一个非常大的整数,表示(我认为)从1970年1月1日午夜UTC开始的毫秒数。显示格式由系统全局变量确定,与实际值无关。
使用STR_TO_DATE()
函数,从字符串转换为DATETIME
或TIMESTAMP
实际上也非常简单;在您的情况下,format string将类似于
STR_TO_DATE('%c/%e/%Y %l:%i:%s %p', datecol)
虽然您可能需要进行一些实验才能使其正常工作。