我声明了列
time_stamp | timestamp| NO| PRI| CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP
。
我有一些旧数据,我想用它来测试posrpoises。由于我的applciation默认显示今天的数据,我想要一个SQL命令,它将yyyy / nn // dd部分更改为今天,同时保留hh:mm:ss部分。
由于列的类型为timestamp
,我怀疑我想要类似
UPDATE table SET time_stamp = time_stamp + (24*60*60* (now() - timestamp))
或类似的,但我不确定确切的命令。
我可以停止吗?
show create table positions;
| positions | CREATE TABLE `positions` (
`vehicle_id` int(11) NOT NULL,
`time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`latitude` double NOT NULL,
`longitude` double NOT NULL,
`distance_travelled` double NOT NULL,
`address` varchar(128) NOT NULL,
UNIQUE KEY `vehicle_id` (`vehicle_id`,`time_stamp`),
CONSTRAINT `positions_ibfk_1` FOREIGN KEY (`vehicle_id`) REFERENCES `vehicles` (`vehicle_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
select * from positions;
| 6 | 2013-10-22 17:24:57 | 1.33793333333333 | 103.755233333333 | 8483 | Pan Island Expressway, Singapore
|
| 6 | 2013-10-22 17:29:42 | 1.35208333333333 | 103.716433333333 | 7023 | 551 Jurong West Street 42, Singapore 640551
|
| 6 | 2013-10-22 17:34:42 | 1.35188333333333 | 103.715416666667 | 149 | 542 Jurong West Avenue 1, Singapore 640542
答案 0 :(得分:0)
这样的事情可能有用:
UPDATE table SET time_stamp = UNIX_TIMESTAMP(CONCAT(CURDATE(), ' ', TIME(FROM_UNIXTIME(time_stamp))))
FROM_UNIXTIME()
会将unix时间戳转换为日期时间戳,然后您可以使用TIME()
轻松提取时间部分。然后,您可以使用CONCAT()
和CURDATE()
来获取当前日期,最后UNIX_TIMESTAMP()
将其转换为时间戳,从而将当前日期与其连接。