#oracle #timestamp #sysdate
#Oracle #временная метка #sysdate
Вопрос:
Каков наилучший способ получить временную метку, состоящую из фактической даты, но фиксированной временной части в oracle.
например, сегодня и всегда 09:00:00
2020-10-20 09:00:00
в MSSQL я бы использовал FORMAT(GETDATE(),'yyyy-MM-dd 09:00:00')
Ответ №1:
Предполагая, что вы хотите a date
, а не a varchar2
, я бы использовал
trunc(sysdate) interval '9' hour
trunc(sysdate)
возвращает сегодня в полночь, а затем interval '9' hour
добавляет 9 часов, чтобы дать вам 9 утра. Вы также можете добавить доли дня к a date
, чтобы вы могли сказать
trunc(sysdate) 9/24
Я склонен считать interval
обозначения более понятными, особенно если вы работаете не с Oracle.
Ответ №2:
Вы можете использовать что-то вроде этого:
SQL> alter session set NLS_DATE_FORMAT='YYYY-MM-DD';
Session altered.
SQL> set head off
SQL> select sysdate||' 09:00:00' from dual;
2020-10-19 09:00:00
Надеюсь, это то, что вы искали 🙂
Комментарии:
1. Это возвращает строку — я бы предложил
TRUNC(SYSDATE) 9/24
, чтобы получитьDATE
значение