如何将 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