powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Сравнить выражение с текущей датой
4 сообщений из 4, страница 1 из 1
Сравнить выражение с текущей датой
    #40033587
DmitryChrono
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Подскажите, пожалуйста ответ на вопрос.

Есть некий столбик в таблице, назовём его expiration_date , он имеет данные вида '202401' , '201711', '201909' и т.п.
Где первые 4 знака это год, следующие за годом 2 знака это месяц (причём если месяц меньше, чем октябрь, то он записывается с нулём впереди).

Т.е. длина эаписей в этой ячейке всегда равна 6 цифр.

Стоит задача сравнить с текущей датой (дабы отобрать учётные записи, у которых истёк "срок годности").

Не могу сообразить, как привести значения в столбике expiration_date к типу даты. Точнее, проблему вызывает именно ноль первым знаком у месяцев с января по сентябрь.

Заранее спасибо!
...
Рейтинг: 0 / 0
Сравнить выражение с текущей датой
    #40033589
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitryChrono
Есть некий столбик в таблице, назовём его expiration_date , он имеет данные вида '202401' , '201711', '201909' и т.п.
это строковое поле ?

DmitryChrono
Не могу сообразить, как привести значения в столбике expiration_date к типу даты.

а зачем тебе дата ? сравнивай строки
По крайней мере индекс (если он конечно есть) по expiration_date сможет "пригодиться"
Код: sql
1.
... where expiration_date < to_char(now(),'YYYYMM')
...
Рейтинг: 0 / 0
Сравнить выражение с текущей датой
    #40033593
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitryChrono,

документацияto_date ( text, text ) → date

Converts string to date according to the given format.

to_date('05 Dec 2000', 'DD Mon YYYY') → 2000-12-05

https://www.postgresql.org/docs/13/functions-formatting.html

Соответственно вам надо YYYYMM в качестве формата.

Но как вам выше написали в таком формате можно и строки сравнивать и числа (что скорее всего будет быстрее заметно потому что надо будет не N раз to_date вызывать по разу на строку а 1 раз to_char вне зависимости даже от наличия индекса).


--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Сравнить выражение с текущей датой
    #40033756
DmitryChrono
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court

... where expiration_date < to_char(now(),'YYYYMM')

[/src]


Спасибо, действительно, так намного проще.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Сравнить выражение с текущей датой
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]