我有一个field1 timestamp,datatype值格式为2016-02-23 12:01:30.
我正在运行查询:
UPDATE <table> set field1 = '2015-12-31'::timestamp::date where .....
Run Code Online (Sandbox Code Playgroud)
输出变为:
2015-12-31 00:00:00
Run Code Online (Sandbox Code Playgroud)
它将时间转换为全零.如何更改日期并保留时间戳?
Gio*_*sos 14
试试这个:
UPDATE mytable
SET field1 = '2015-12-31'::timestamp +
EXTRACT(HOUR FROM field1) * INTERVAL '1 HOUR' +
EXTRACT(MINUTE FROM field1) * INTERVAL '1 MINUTE' +
EXTRACT(SECOND FROM field1) * INTERVAL '1 SECOND'
WHERE ...
Run Code Online (Sandbox Code Playgroud)
还有另一种方法,使用 DateTime 类型。
因此,如果要将表的日期设置为今天,可以使用以下命令:
UPDATE table SET column = current_date::date + column::time;
current_date用“2019-02-23”切换,它应该也能工作。
只需添加新日期和现有时间即可。这里是:
UPDATE mytable
SET field1 = '2015-12-31'::date + field1::time with time zone
WHERE ...;
Run Code Online (Sandbox Code Playgroud)
甚至更清晰的切割:
UPDATE mytable
SET field1 = field1 - field1::date + '2015-12-31'::date
WHERE ...;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9325 次 |
| 最近记录: |