【发布时间】:2011-12-24 06:01:04
【问题描述】:
我有数千个日期,格式如下:
2011-10-02T23:25:42Z(在 UTC 中也称为 ISO 8601)
我应该使用哪种 MySQL 数据类型在 MySQL 数据库中存储这样的 ISO8601 日期?例如。 Datetime、timestamp 还是别的什么?
哪个最适合比较(例如,获取两个日期/时间之间的记录)并对查询结果进行排序?如果数据库很大怎么办?
将上述 PHP 字符串转换为 MySQL 存储的最佳方法是什么? (我猜date_default_timezone_set('UTC'); 会被使用?)
【问题讨论】:
-
这对我的情况有帮助:STR_TO_DATE('2016-10-19T00:57:38+0000','%Y-%m-%dT%H:%i:%s+%x' ) +%x 是因为 php 的 DateTime::ISO8601 中的时区数字,例如。 +0000 似乎在 mysql 中没有指定的表示,因此使用 %x 表示未知,甚至 STR_TO_DATE('2016-10-19T00:57:38+0000','%Y-%m-%dT%T') 但它引发截断日期时间 ps 的警告:对于 '2016-10-19T00:57:38+0000',使用 '%Y-%m-%dT%H:%i:%s+%x' 作为 mysql 中的格式说明符跨度>
标签: php mysql date date-format iso8601