Dip*_*Sen 53 sql postgresql timestamp casting rounding
millisecond如果second零件也从timestampw/o中取出,我该如何丢弃/绕过零件timezone?
Erw*_*ter 111
将其投射到timestamp(0)或timestamptz(0)删除小数秒:
SELECT now()::timestamp(0);
Run Code Online (Sandbox Code Playgroud)
像@karlgold评论说,这轮以全秒,如果你跟上这个数据类型工作分数不存储.
使用date_trunc()更具体的需求.
SELECT date_trunc('second', now()::timestamp);
Run Code Online (Sandbox Code Playgroud)
这截断(叶秒不变).进一步的操作可以重新引入小数秒.
当然,你可以将两者结合起来 - 这次也删除了第二部分:
SELECT now()::timestamp(0);
Run Code Online (Sandbox Code Playgroud)
但请注意,将此值分配给不同数据类型的列或变量可能会导致另一个赋值转换.
丢弃毫秒:
SELECT DATE_TRUNC('second', CURRENT_TIMESTAMP::timestamp);
Run Code Online (Sandbox Code Playgroud)
2019-08-23 16:42:43
丢弃秒数:
SELECT DATE_TRUNC('minute', CURRENT_TIMESTAMP::timestamp);
Run Code Online (Sandbox Code Playgroud)
2019-08-23 16:42:00
如果你只是想要时间,这里是 postgres 的代码
SELECT DATE_TRUNC('second', CURRENT_TIMESTAMP::timestamp)::time;
Run Code Online (Sandbox Code Playgroud)
它将返回“没有时区的时间”数据类型