This page упоминает, как урезать метку времени до минут/часов/и т. Д. в Oracle.Как урезать дату в секундах в Oracle
Как бы вы обрезали временную метку в секундах таким же образом?
This page упоминает, как урезать метку времени до минут/часов/и т. Д. в Oracle.Как урезать дату в секундах в Oracle
Как бы вы обрезали временную метку в секундах таким же образом?
Поскольку точность DATE
относится ко второй (и без доли секунды), нет необходимости в TRUNC
.
Тип данных TIMESTAMP
позволяет использовать доли секунды. Если вы преобразуете его в DATE
, дробные секунды будут удалены - например.
select cast(systimestamp as date)
from dual;
укоротить timestamp
до нескольких секунд вы можете привести его к дате:
CAST(timestamp AS DATE)
Чтобы затем выполнить TRUNC
«S в статье:
TRUNC(CAST(timestamp AS DATE), 'YEAR')
На общая тема усечения дат Oracle, вот ссылка на документацию для моделей формата, которые можно использовать в дате trunc() AND round() fu nctions
http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/functions242.htm#sthref2718
«Секунды» нет в списке, так как зернистость ДАТЫ типа данных в секундах.
что-то по заказу:
select to_char(current_timestamp, 'SS') from dual;
Я использовал функцию:
FUNCTION trunc_sec(p_ts IN timestamp)
IS
p_res timestamp;
BEGIN
RETURN TO_TIMESTAMP(TO_CHAR(p_ts, 'YYYYMMDDHH24MI'), 'YYYYMMDDHH24MI');
END trunc_sec;
Я извиняюсь, но все мои предшественники, кажется, не так:
выберите бросок (systimestamp как дата) от двойного не обрезается, а округляется до следующей секунды.
Я использую функцию:
CREATE OR REPLACE FUNCTION TRUNC_TS(TS IN TIMESTAMP) RETURN DATE AS
BEGIN
RETURN TS;
END;
SELECT systimestamp, trunc_ts(systimestamp) date_trunc,
CAST(systimestamp AS DATE) date_cast FROM dual
SYSTIMESTAMP DATE_TRUNC DATE_CAST
21.01.10 15:03:34,567350 +01:00 21.01.2010 15:03:34 21.01.2010 15:03:35
Я запустил ваш код, но не могу воспроизведите ваши результаты. В нескольких десятках тестов (большинство из которых было затронуто округлением), секундная часть никогда не отличалась между тремя результатами. Какую версию Oracle вы используете? (Я был на 11.2). – 2010-11-24 16:07:50
Trunc работу мин только, отлитый на сегодняшний день to_char(START_TIME,'YYYYMMDDHH24MISS')
или просто select to_char(current_timestamp, 'YYYYMMDDHH24MISS') from dual;
https://www.techonthenet.com/oracle/functions/trunc_date.php
Я думаю, что это путь, поскольку, в отличие от большинства этих ответов, он не зависит от версии Oracle. Это не совсем правильно, но вы пропустили секунды. Должно быть что-то вроде: to_date (to_char (systimestamp, 'YYYY-MM-DD HH24: MI: SS'), 'YYYY-MM-DD HH24: MI: SS') – delany 2013-08-02 14:49:40