我正在尝试在mysql表中输入日期
`ssdate` datetime
生成日期的函数可以输出3种格式:
1276142400000
Thu Jun 10 00:00:00 GMT-0400 2010
Fri Jun 4 2010
我想知道哪种转换为此字段格式最容易?
由于我只想保存日期,是否有比datetime
更好的选项可以使用其中一种输出格式?
答案 0 :(得分:3)
您可以使用第三种格式:
date('Y-m-d H:i:s', strtotime('Fri Jun 4 2010'));
只需将结果放入日期时间字段即可。如果您打算使用日期字段,则可以执行
date('Y-m-d', strtotime('Fri Jun 4 2010'));
答案 1 :(得分:1)
最简单的方法可能是FROM_UNIXTIME(),但1276142400000
似乎不是Unix时间戳:
mysql> SELECT FROM_UNIXTIME(1276142400000);
+------------------------------+
| FROM_UNIXTIME(1276142400000) |
+------------------------------+
| NULL |
+------------------------------+
1 row in set (0.00 sec)
也许这是一个多了1000的Unix时间戳:
mysql> SELECT FROM_UNIXTIME(1276142400000/1000);
+-----------------------------------+
| FROM_UNIXTIME(1276142400000/1000) |
+-----------------------------------+
| 2010-06-10 06:00:00 |
+-----------------------------------+
1 row in set (0.05 sec)
而且,如果不确定,你总是有STR_TO_DATE():
mysql> SELECT STR_TO_DATE('Fri Jun 4 2010', '%a %b %e %Y');
+----------------------------------------------+
| STR_TO_DATE('Fri Jun 4 2010', '%a %b %e %Y') |
+----------------------------------------------+
| 2010-06-04 |
+----------------------------------------------+
1 row in set (0.00 sec)
答案 2 :(得分:0)
您可以将列设置为varchar(14),与第一个格式输出完美配合。
答案 3 :(得分:0)
在数据库中,我会将时间值存储在DATETIME
字段中,主要是因为日期操作的内置方法(INTERVAL
等)。一种可能的替代方法是将UNIX时间戳存储为数值,但我不建议这样做。如有疑问,请选择标准解决方案。
至于要转换的日期格式,我肯定会使用UNIX时间戳(在你的情况下为#1选项,我猜是乘以1000)作为最普遍的。所有其他格式都依赖于语言环境和时区,这可能是未来很多令人头疼的问题。