powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / select date <E> from rdb$database: <E> может быть только литералом ?
9 сообщений из 9, страница 1 из 1
select date <E> from rdb$database: <E> может быть только литералом ?
    #38861356
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hi all.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SQL> select date '01.01.2012' from rdb$database;

   CONSTANT
===========
2012-01-01

SQL> select date '01.01.'||'2012' from rdb$database;

CONCATENATION
==============
 2015-01-012012 

SQL> select date '01.' || '01.' || '2012' from rdb$database;
Statement failed, SQLSTATE = 22018
Dynamic SQL Error
-conversion error from string "01."

Ошибка конверсии лезет только в третьем примере, а во втором выдается вообще какой-то бред.

Как правильно называется возможность создания даты через date 'dd.mm.yyyy', т.е. по каким словам это в доке искать ?
Я пошарил вот тут:
http://firebirdsql.org/rlsnotesh/rlsnotes210.html#rnfb210-dml-datetimetyping
http://www.firebirdsql.org/en/firebird-date-literals/
- но бестолку.
...
Рейтинг: 0 / 0
select date <E> from rdb$database: <E> может быть только литералом ?
    #38861364
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

Код: sql
1.
select date '01.' /*|| '01.' || '2012'*/ from rdb$database;



выдаст ошибку как и 3 пример.
Это называется "сокращёное приведение типов" в русскоязычной доке. Как в оригинале не знаю, не я эту часть описывал/переводил. Собствено date '...' действует только на литерал, но не выражение. Отсюда и ошибка.
...
Рейтинг: 0 / 0
select date <E> from rdb$database: <E> может быть только литералом ?
    #38861365
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
точнее "Сокращённое приведение типов даты и времени"
...
Рейтинг: 0 / 0
select date <E> from rdb$database: <E> может быть только литералом ?
    #38861373
Stupid_BOT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,
это называется "приоритет" операторов.
...
Рейтинг: 0 / 0
select date <E> from rdb$database: <E> может быть только литералом ?
    #38861376
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stupid_BOT,

приоритет опеторов здесь не причём. Можешь попробовать выражение в скобки взять. Сокращённое приведение типов работает только с литералами.
...
Рейтинг: 0 / 0
select date <E> from rdb$database: <E> может быть только литералом ?
    #38861383
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда почему во втором примере нет такой ошибки, а выдаётся бредятина ?
...
Рейтинг: 0 / 0
select date <E> from rdb$database: <E> может быть только литералом ?
    #38861394
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоидтогда почему во втором примере нет такой ошибки, а выдаётся бредятина ?
Ну насчет бредятины ты погорячился.
Просто подставила текущий год.
И явный cast('01.02' as date) тоже подставит текущий год
А вот фича это или баг надеюсь скажут нам те кто знает
...
Рейтинг: 0 / 0
select date <E> from rdb$database: <E> может быть только литералом ?
    #38861531
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
литерал - это <date 'строка'>, никаких выражений там в принципе быть не может. Почему он подставляет отсутствующий год, но не подставляет отсутствующие месяц с годом - ХЗ, это из серии недокументированного поведения.
...
Рейтинг: 0 / 0
select date <E> from rdb$database: <E> может быть только литералом ?
    #38861551
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrПочему он подставляет отсутствующий год, но не подставляет отсутствующие
месяц с годом - ХЗ
Потому что не нашёл разделителя и поэтому не смог определить формат литерала.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / select date <E> from rdb$database: <E> может быть только литералом ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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