Использование строк даты в фильтрах окна данных

В ряде окон данных в моем приложении пользователи имеют доступ к текстовому полю произвольной формы, где они могут ввести любую строку фильтра, которая им нравится. Часто они успешно используют такой поисковый запрос, как: date(last_updated_date) = 2010-10-22

Я пытаюсь обновить некоторую документацию, и меня попросили рассмотреть этот синтаксис, в частности. Итак, мой вопрос заключается в следующем: откуда PowerBuilder узнает, что «2010-10-22» — это дата, и каковы правила включения литералов даты, подобных этому, без специального преобразования? Основано ли это на том факте, что левое значение явно является типом данных даты, или оно основано на конкретном формате даты, используемом в «2010-10-22», или на том и другом? Просто для ясности: этот синтаксис работает правильно.


person StevenHB    schedule 19.04.2012    source источник


Ответы (2)


Это определенно формат для буквальных дат (без кавычек), и нет необходимости сравнивать с левой частью сравнения, чтобы обрабатывать его как дату.

В разделе «Стандартные типы данных» в документации указано для типа «Дата»:

Дата, включая полный год (от 1000 до 3000), номер месяца (от 01 до 12) и день (от 01 до 31). Использование литералов Чтобы присвоить буквальное значение, разделите год, месяц и день дефисом. Например:

2001-12-25 // 25 декабря 2001 г.

2003-02-06 // 6 февраля 2003 г.

person Seki    schedule 20.04.2012

Все, что Секи сказал о литералах, правда. Однако, если вы хотите/должны использовать строки, формат «гггг-мм-дд» — это тот, который всегда будет работать при сравнении с/назначении переменной типа даты. Он считается стандартом для формата даты.

Если в качестве даты используется другой строковый формат, например «25-12-2012», PB использует для преобразования региональные настройки Windows. Если конвертация не удалась, вы получите 1900-01-01.

Вы также можете проверить справку PB «Функция Date PowerScript / Преобразование строки в дату».

person m0rt1m3r    schedule 20.04.2012