@komino
Бархатные

Как получить timestamp,обрезав пустое время?

Как при запросе, значение 27.03.2023 00:00:00 преобразовать в 27.03.2023, но при этом 27.03.2023 12:24:37 оставить 27.03.2023 12:24:37?

и можно ли это сделать на уровне alter session set nls_date_format / или того подобное?
  • Вопрос задан
  • 152 просмотра
Пригласить эксперта
Ответы на вопрос 3
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
preg_replace("/ 00:00:00$/", "", $date_str);
Ответ написан
@alexalexes
komino, это проблема разработчика, а не конфига драйвера СУБД, как он будет интерпретировать значение даты в конкретном запросе, если ему не подходит статичный шаблон nls_date_format. Такой шаблон не имеет в себе лексического интерпретатора, способного выполнять условные операторы.
Решение:
select
-- вариант 1
to_char(sysdate, 'DD.MM.YYYY' || decode(sysdate - trunc(sysdate), 0, '', ' HH24:MI:SS')) as your_format_date_1, 
-- вариант 2
case
  when sysdate - trunc(sysdate) > 0
  then to_char(sysdate, 'DD.MM.YYYY HH24:MI:SS')
  else to_char(sysdate, 'DD.MM.YYYY')
end as your_format_date_2
from dual;
Ответ написан
@Akina
Сетевой и системный админ, SQL-программист.
Не делай так. Единообразие - это очень полезная штука. Если оставить нулевую компоненту времени, то конечному пользователю не придётся думать, действительно ли там нули, или время не отображается из-за какого-то косяка..
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы