如何将 DateTime 转换为 MySQL 中的数字?

Posted

技术标签:

【中文标题】如何将 DateTime 转换为 MySQL 中的数字?【英文标题】:How to convert DateTime to a number in MySQL? 【发布时间】:2010-12-27 15:40:35 【问题描述】:

如何从 mysql 中的 DateTime 实例获取自 '1970-01-01 00:00:01' 以来的总秒数?

【问题讨论】:

【参考方案1】:

您正在寻找UNIX_TIMESTAMP()

见:http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_unix-timestamp

如果使用日期参数调用 UNIX_TIMESTAMP(),它会返回参数的值作为自 '1970-01-01 00:00:00' UTC 以来的秒数。

【讨论】:

转换日期时间,通常不需要是UTC。如果您需要转换本地日期时间,则必须编辑此答案。检查我的答案。 另外,正如文档所说“参数值的有效范围与 TIMESTAMP 数据类型相同:'1970-01-01 00:00:01.000000' UTC to '2038-01-19 03:14:07.999999' UTC。如果将超出范围的日期传递给 UNIX_TIMESTAMP(),它会返回 0。"【参考方案2】:

使用UNIX_TIMESTAMP( dateField )

【讨论】:

【参考方案3】:
SELECT DATE_FORMAT(`value`, '%Y%m%d') AS `date_ymd` FROM `table_name`;

【讨论】:

【参考方案4】:

UNIX_TIMESTAMP(datetime) 强制本地化日期时间,与时间戳不同,它“按原样”存储。

您实际上需要以下任何一项来丢弃 UTC 校正:

UNIX_TIMESTAMP(CONVERT_TZ(datetime, '+00:00', @@session.time_zone))

或:

TIMESTAMPDIFF(SECOND,'1970-01-01 00:00:00',datetime)

参考:1、2、3、4

【讨论】:

以上是关于如何将 DateTime 转换为 MySQL 中的数字?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 C# DateTime 转换为 MySQL 时间戳表列

MySQL 脚本将 DateTime.Ticks 值转换为 SQL Date

如何将MySQL Datetime UTC转换为实际时区

mysql中的时间类型datetime的转换

如何在 JavaScript 中将时间戳转换为 MySQL DateTime?

如何将 Sybase ASE smalldatetime/datetime/bigdatetime 转换为标准格式