Как удалить компонент времени из отметки времени?
Как удалить компонент времени из отметки времени, например:
2014-01-01 12:00:01
Становиться
2014-01-01 00:00:00
2 ответа
Решение
Похоже, вы на самом деле спрашиваете, как удалить компонент времени из 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;
Если вы знаете фактическую разницу, которую хотите сбросить, вы можете использовать timestampadd. Для вашего примера вам нужно сделать это дважды:
select timestampadd(ss, -1, (timestampadd(hh, -12, '2014-01-01 12:00:01')))
Это ссылка на документацию Vertica по использованию timestampadd: https://my.vertica.com/docs/5.0/HTML/Master/16090.htm