将MySQL datetime转换为时间戳
我试图将datetime转换为时间戳,但mysql给了我警告,并且转换的值是错误的。下面是SQL查询将MySQL datetime转换为时间戳,mysql,datetime,timestamp,Mysql,Datetime,Timestamp,我试图将datetime转换为时间戳,但mysql给了我警告,并且转换的值是错误的。下面是SQL查询 UPDATE table1 A, table2 B SET B.date_added=UNIX_TIMESTAMP(STR_TO_DATE(A.date_added, '%M %d %Y %h:%i%p')) WHERE A.id=B.id; 警告 +---------+------+-------------------------------------------------------
UPDATE table1 A, table2 B SET B.date_added=UNIX_TIMESTAMP(STR_TO_DATE(A.date_added, '%M %d %Y %h:%i%p')) WHERE A.id=B.id;
警告
+---------+------+--------------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+--------------------------------------------------------------------------+
| Warning | 1411 | Incorrect datetime value: '2011-06-11 20:29:02' for function str_to_date |
+---------+------+--------------------------------------------------------------------------+
结果
+---------------------+---------------------+
| date_added | date_added |
+---------------------+---------------------+
| 2012-02-23 06:12:45 | 2012-12-23 19:08:33 |
+---------------------+---------------------+
我还尝试了以下查询,但它在时间戳字段中显示0000-00-00:00:00
UPDATE table1 A, table2 B SET B.date_added=UNIX_TIMESTAMP(A.date_added) WHERE A.id=B.id;
请试试这个:
UPDATE table1 A, table2 B
SET B.date_added = FROM_UNIXTIME(A.date_added)
WHERE A.id=B.id
。
似乎你对日期戳记的格式有问题。
另外请查看此帖子:您正在使用
'%M%d%Y%h:%i%p'
作为日期格式,但警告显示的日期字符串“2011-06-11 20:29:02”与该格式不匹配。即:年份为第一年,时间为24小时格式
您可以改用“%Y-%M-%d%T”
,该格式将与数据匹配
有关日期格式代码的更多信息,请参见此处:
更新表1 A、表2 B设置B.date\u added=UNIX\u时间戳(A.date\u added),其中A.id=B.id代码>
UNIX_时间戳('2015-01-15 12:00:00')代码>
足够将mysql datetime转换为时间戳。在mysql 5.5上,这可以正常工作:
UPDATE`some_表`
设置'timestamp\u col`='datetime\u col`
带有的datetime\u col
和的timestamp\u col
也就是说:不需要显式的类型转换。我也尝试过,但是为什么会有时差表A2012-02-23 06:12:45
table B2012-12-23 21:01:57
有一些关于时区和UNIXTIME的奇怪的东西,请参阅以获得解释