powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Почему не работает Cast('TODAY 10:00') ?
13 сообщений из 13, страница 1 из 1
Почему не работает Cast('TODAY 10:00') ?
    #39630633
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно, subj!
Казалось бы, чего проще - сначала при Cast'е подменить в строке такие ключевые слова, как TODAY, TOMORROW, YERSTERDAY, NOW, а затем конвертировать результат, как обычную строку представления даты и времени. Так ведь нет, ёшки-матрёшки!... :)
...
Рейтинг: 0 / 0
Почему не работает Cast('TODAY 10:00') ?
    #39630636
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мипардон! Имелся в виду Cast('TODAY 10:00' AS TIMESTAMP)
...
Рейтинг: 0 / 0
Почему не работает Cast('TODAY 10:00') ?
    #39630640
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проще каждому своё. А "TODAY чего-то там" - это
строка, а не дата в каком-то формате (который тоже
каждый захочет свой). Так что в сад.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Почему не работает Cast('TODAY 10:00') ?
    #39630641
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам, так 'TODAY' в Cast('TODAY' AS TIMESTAMP) - тоже строка! Разве нет?
...
Рейтинг: 0 / 0
Почему не работает Cast('TODAY 10:00') ?
    #39630643
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых, нет. Во-вторых, юзай уже существующее (dateadd), а не страдай фигнёй.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Почему не работает Cast('TODAY 10:00') ?
    #39630653
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам, т.е., по твоему, гораздо проще и понятнее написать:
BETWEEN DateAdd(10 HOUR TO Cast('TODAY' AS TIMESTAMP)) AND DateAdd(11 HOUR TO Cast('TODAY' AS TIMESTAMP))
вместо:
BETWEEN Cast('TODAY 10:00' AS TIMESTAMP) AND Cast('TODAY 11:00' AS TIMESTAMP)
?

и еще попутный вопрос - разве на сервере FirebirdSQL учитываются настройки разделителей даты и времени локали ОС?
...
Рейтинг: 0 / 0
Почему не работает Cast('TODAY 10:00') ?
    #39630665
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

проще, не проще пофиг.
TODAY, TOMORROW, YERSTERDAY, NOW это строковые литералы которые преобразуются к соответствующему типу. Добавление в них чего угодно, путь даже пробела превращает их в обыкновенную строку. Формата даты-времени состоящего из TODAY 10:00 сервер не понимает.

Ну и если диалект 3, то можно писать

Код: sql
1.
BETWEEN DATEADD(10 HOUR TO TIMESTAMP 'today') AND DATEADD(11 HOUR TO TIMESTAMP 'today')



или

Код: sql
1.
BETWEEN DATE 'today' + TIME '10:00' AND DATE 'today' + TIME '11:00'
...
Рейтинг: 0 / 0
Почему не работает Cast('TODAY 10:00') ?
    #39630673
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисrdb_dev,

проще, не проще пофиг.
TODAY, TOMORROW, YERSTERDAY, NOW это строковые литералы которые преобразуются к соответствующему типу.Конечно строковые литералы! Что же еще?
Симонов ДенисДобавление в них чего угодно, путь даже пробела превращает их в обыкновенную строку. Формата даты-времени состоящего из TODAY 10:00 сервер не понимает.О том и речь! Хотелось бы, чтоб сервер понимал, что при преобразовании строки в дату через Cast, перед преобразованием надо заменить в строке строковый литерал TODAY на реальное значение. Что-то типа макроподстановки.
...
Рейтинг: 0 / 0
Почему не работает Cast('TODAY 10:00') ?
    #39630675
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
SQL> select cast(time '10:00' as timestamp) from rdb$database;

                     CAST
=========================
2018-04-16 10:00:00.0000

?
...
Рейтинг: 0 / 0
Почему не работает Cast('TODAY 10:00') ?
    #39630678
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov, не дурно! O_o
А как на счёт TOMORROW и YERSTERDAY?
...
Рейтинг: 0 / 0
Почему не работает Cast('TODAY 10:00') ?
    #39630684
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
rdb_devBasil A. Sidorov, не дурно! O_o
А как на счёт TOMORROW и YERSTERDAY?Чёт я совсем...
SELECT Cast(TIME '10:00' AS TIMESTAMP) + 1 FROM oneRow
и
SELECT Cast(TIME '10:00' AS TIMESTAMP) - 1 FROM oneRow
...
Рейтинг: 0 / 0
Почему не работает Cast('TODAY 10:00') ?
    #39630698
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хачу чтобы сервер понимал
Код: sql
1.
CAST('после дождичка в четверг' AS TIMESTAMP)
...
Рейтинг: 0 / 0
Почему не работает Cast('TODAY 10:00') ?
    #39630699
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryХачу чтобы сервер понимал
Код: sql
1.
CAST('после дождичка в четверг' AS TIMESTAMP)

Тут придётся подтягивать в FirebirdSQL либо прогноз погоды, либо данные с климатического датчика. Будет непросто...
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Почему не работает Cast('TODAY 10:00') ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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