如何从时间戳中删除时间组件,例如:
2014-01-01 12:00:01
成为
2014-01-01 00:00:00
答案 0 :(得分:4)
您好像正在询问如何从timestamp
类型中删除时间组件。
让我们设置一些测试数据:
CREATE TABLE public.test (
time_stamp timestamp
);
INSERT INTO public.test (time_stamp) VALUES (SYSDATE());
INSERT INTO public.test (time_stamp) VALUES (SYSDATE());
INSERT INTO public.test (time_stamp) VALUES (SYSDATE());
COMMIT;
在转换之前,数据如下:
time_stamp ---------------------------- 2014-07-01 21:37:11.454081 2014-07-01 21:37:15.521172 2014-07-01 21:37:18.048398
我们将使用TRUNC
函数截断值:
SELECT TRUNC(time_stamp, 'dd') FROM public.test;
这会产生:
TRUNC --------------------- 2014-07-01 00:00:00 2014-07-01 00:00:00 2014-07-01 00:00:00
如果您愿意写出来:
SELECT CAST(CAST(time_stamp AS date) AS timestamp) FROM public.test;
或者
SELECT time_stamp::date::timestamp FROM public.test;
答案 1 :(得分:-2)
如果您知道要重置的实际差异,可以使用timestampadd。对于您的示例,您需要执行两次:
select timestampadd(ss, -1, (timestampadd(hh, -12, '2014-01-01 12:00:01')))
这是关于如何使用timestampadd的vertica文档的链接: https://my.vertica.com/docs/5.0/HTML/Master/16090.htm