Oracle SQL - столбец с меткой времени unix, требуется метка времени dd-mm-yyyy - PullRequest
4 голосов
/ 08 марта 2010

Есть ли способ в Oracle, чтобы получить только часть dd-mm-yyyy из метки времени unix в Oracle?

Как:

select to_char(my_timestamp, 'ddmmyyyy') as my_new_timestamp from table

Ответы [ 3 ]

3 голосов
/ 08 марта 2010

Учитывая эти данные ...

SQL> alter session set nls_date_format='dd-mon-yyyy hh24:mi:ss'
  2  /

Session altered.

SQL> select * from t23
  2  /

MY_TIMESTAMP
--------------------
08-mar-2010 13:06:02
08-mar-2010 13:06:08
13-mar-1985 13:06:26

SQL> 

.. это просто вопрос преобразования времени, прошедшего с 01 января 1970 года в секунды:

SQL> select my_timestamp
  2        , (my_timestamp - date '1970-01-01') * 86400 as unix_ts
  3  from t23
  4  /

MY_TIMESTAMP            UNIX_TS
-------------------- ----------
08-mar-2010 13:06:02 1268053562
08-mar-2010 13:06:08 1268053568
13-mar-1985 13:06:26  479567186

SQL>
2 голосов
/ 08 марта 2010

Насколько я понимаю, метка времени Unix определяется как количество секунд с 1970-01-01, в этом случае:

select DATE '1970-01-01' + my_timestamp/86400 from table;

(в дне 86400 секунд.)

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

select TRUNC(DATE '1970-01-01' + my_timestamp/86400) from table;

Однако, если вам нужна «усеченная» временная метка Unix, попробуйте следующее:

select floor(my_timestamp/84600)*84600 from dual;
1 голос
/ 08 марта 2010

Я считаю, что это:

select to_char(my_timestamp, 'dd-mm-yyyy') as my_new_timestamp from table

См. Также эту ссылку на спецификаторы формата даты Oracle.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...