MySQL 时间戳格式和datediff

MySQL timestamp format and datediff

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

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

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

从字符串转换为 DATETIMETIMESTAMP 实际上也相当简单,使用 STR_TO_DATE() function; in your case the format string 类似于

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

尽管您可能需要进行一些试验才能使其可靠地工作。

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

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

LEFT 函数会取 space 左边的子字符串,这就是你的日期,然后 STR_TO_DATE 会将该子字符串转换为系统可以使用的日期.

(不知道你的领域和 table 名称,我使用了 tmy_table。)