如何从时间戳中删除时间组件?

时间:2014-07-01 18:36:38

标签: sql vertica vsql

如何从时间戳中删除时间组件,例如:

2014-01-01 12:00:01

成为

2014-01-01 00:00:00

2 个答案:

答案 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