将时间戳日期更改为今天,但保留hh:mm:ss部分

时间:2014-02-20 02:23:40

标签: mysql sql date unix-timestamp

我声明了列 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

1 个答案:

答案 0 :(得分:0)

这样的事情可能有用:

UPDATE table SET time_stamp = UNIX_TIMESTAMP(CONCAT(CURDATE(), ' ', TIME(FROM_UNIXTIME(time_stamp))))

FROM_UNIXTIME()会将unix时间戳转换为日期时间戳,然后您可以使用TIME()轻松提取时间部分。然后,您可以使用CONCAT()CURDATE()来获取当前日期,最后UNIX_TIMESTAMP()将其转换为时间戳,从而将当前日期与其连接。