Как обрезать дату до секунд в Oracle - PullRequest
11 голосов
/ 01 октября 2008

На этой странице упоминается, как урезать метку времени до минут / часов / и т. Д. в Oracle.

Как бы вы урезали метку времени до секунд таким же образом?

Ответы [ 7 ]

28 голосов
/ 01 октября 2008

Так как точность DATE равна секунде (без долей секунд), нет необходимости TRUNC вообще.

Тип данных TIMESTAMP учитывает доли секунд. Если вы преобразуете его в DATE, то доли секунды будут удалены - например,

select cast(systimestamp as date) 
  from dual;
3 голосов
/ 21 января 2010

Извините, но все мои предшественники кажутся неправыми:

выбор приведения (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
2 голосов
/ 31 марта 2009

Я использовал такую ​​функцию:

FUNCTION trunc_sec(p_ts IN timestamp)
IS
    p_res timestamp;
BEGIN
    RETURN TO_TIMESTAMP(TO_CHAR(p_ts, 'YYYYMMDDHH24MI'), 'YYYYMMDDHH24MI');
END trunc_sec;
2 голосов
/ 01 октября 2008

По общей теме обрезания дат Oracle приведена ссылка на документацию для моделей форматов, которые можно использовать в функциях trunc () И round ()

http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/functions242.htm#sthref2718

«Секунды» не указаны в списке, поскольку степень детализации типа данных DATE составляет секунды.

1 голос
/ 01 октября 2008

Чтобы усечь timestamp до секунд, вы можете привести его к дате:

CAST(timestamp AS DATE)

Чтобы затем выполнить TRUNC в статье:

TRUNC(CAST(timestamp AS DATE), 'YEAR')
0 голосов
/ 06 декабря 2016

работа усечения только до минимума, приведение к дате to_char(START_TIME,'YYYYMMDDHH24MISS')

или просто select to_char(current_timestamp, 'YYYYMMDDHH24MISS') from dual;

https://www.techonthenet.com/oracle/functions/trunc_date.php

0 голосов
/ 01 октября 2008

Что-то порядка:

select to_char(current_timestamp, 'SS') from dual;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...