我想在一个MySQL表将字符串转换成datetime
`ssdate` datetime
产生之日起的功能输入一个日期可以在三种格式输出它:
1276142400000
Thu Jun 10 00:00:00 GMT-0400 2010
Fri Jun 4 2010
我想知道其中哪些最容易转换为此字段格式? 由于我只想保存日期,是否有比datetime
更好的选项,可以使用这些输出格式之一?
我想在一个MySQL表将字符串转换成datetime
`ssdate` datetime
产生之日起的功能输入一个日期可以在三种格式输出它:
1276142400000
Thu Jun 10 00:00:00 GMT-0400 2010
Fri Jun 4 2010
我想知道其中哪些最容易转换为此字段格式? 由于我只想保存日期,是否有比datetime
更好的选项,可以使用这些输出格式之一?
您可以使用第三种格式:
date('Y-m-d H:i:s', strtotime('Fri Jun 4 2010'));
只需将结果放入日期时间字段即可。如果你打算使用日期字段,而不是你可以做
date('Y-m-d', strtotime('Fri Jun 4 2010'));
您可以将您的列设置为varchar(14),将与您的第一个格式输出完美配合。
最简单的方法很可能是FROM_UNIXTIME(),但1276142400000
并不似乎是一个Unix时间戳:如果不确定
mysql> SELECT FROM_UNIXTIME(1276142400000/1000);
+-----------------------------------+
| FROM_UNIXTIME(1276142400000/1000) |
+-----------------------------------+
| 2010-06-10 06:00:00 |
+-----------------------------------+
1 row in set (0.05 sec)
而且,:
mysql> SELECT FROM_UNIXTIME(1276142400000);
+------------------------------+
| FROM_UNIXTIME(1276142400000) |
+------------------------------+
| NULL |
+------------------------------+
1 row in set (0.00 sec)
也许这是一个Unix时间戳1000 mutiplied ,你总是有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)
upvote for'FROM_UNIXTIME()',我完全同意日期转换应该在数据库中完成,如果可能的话。但是,'STR_TO_DATE()'是有争议的,因为整个过程将取决于语言环境(也可能是时区)。 – hudolejev 2010-06-08 14:33:21
在数据库中,我会在,存储主要是因为最新的操作(INTERVAL
等)内置方法DATETIME
场时间值。一种可能的选择是将UNIX时间戳存储为数值,但我不会建议这样做。如有疑问,请选择标准解决方案。
至于日期格式转换,我一定会用UNIX时间戳(你的情况#1选项,乘以1000我猜)作为最普遍的一个。所有其他格式都是区域性和时区相关的,这是未来很多令人头疼的可能来源。
...直到2286-11-20 17:46:39(不是最好的方式去吧 – hudolejev 2010-06-08 11:41:56