将字符串转换为datetime

时间:2010-06-08 10:07:51

标签: php mysql datetime date

我正在尝试在mysql表中输入日期

`ssdate` datetime

生成日期的函数可以输出3种格式:

1276142400000
Thu Jun 10 00:00:00 GMT-0400 2010
Fri Jun 4 2010

我想知道哪种转换为此字段格式最容易? 由于我只想保存日期,是否有比datetime更好的选项可以使用其中一种输出格式?

4 个答案:

答案 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)作为最普遍的。所有其他格式都依赖于语言环境和时区,这可能是未来很多令人头疼的问题。