Informix DATE формат
Имейте в виду, что дата 1899-12-31 соответствует внутреннему представлению даты, равному нулю (0). То есть внутренне Informix хранит значения DATE в 4-байтовом целом числе и подсчитывает количество дней с 1899-12-31, поэтому День 1 был 1900-01-01 (и поскольку он знает, что 1900 не был високосным годом День 60 был 1900-03-01).
Этот факт заставляет меня беспокоиться о том, что у вас на столе. Однако, если данные в вашей таблице не могут быть преобразованы в DATE по запросу, обычно вы получите сообщение об ошибке.
Какая у вас схема таблицы?
Было бы целесообразно установить схему либо с помощью DB-Access и опции Info / Tables, либо с помощью DB-Schema:
dbschema -d dbase -t visit
Вывод DB-Schema больше подходит для добавления к вашему вопросу.
Выражения запроса, использующие 'TODAY-365' и 'TODAY', должны работать нормально - если есть данные для выбора.
Переменная среды DBDATE
Существует переменная окружения DBDATE, которую вам может потребоваться установить, чтобы заставить вещи работать - для преобразования строкового представления в даты. Поскольку вы, вероятно, проживаете в Великобритании (с вашего значка), вам может потребоваться установить для DBDATE значение:
export DBDATE=DMY4/
Это говорит о том, что даты состоят из дня, месяца, четырехзначного года, а «/» используется в качестве предпочтительного разделителя. Вы не будете удивлены, узнав, что предполагаемое значение по умолчанию обычно равно MDY4 /, для формата США; Я обычно использую 'Y4MD-', поэтому я вижу значение DATE таким же, как и DATETIME YEAR TO DAY, что является обозначением ISO 8601: 2004 для даты. (У этого есть много преимуществ: это однозначно, и наивные алгоритмы сортировки сортируют такие даты по порядку дат.) На самом деле в IDS есть много механизмов в фоновом режиме (IBM Informix Dynamic Server - который, я полагаю, является той СУБД, которой вы являетесь использование; есть некоторые альтернативы, которые также являются СУБД Informix), такие, что строки с двузначными датами обычно будут преобразованы правильно (но они неоднозначны и нежелательны), и разделители, отличные от '/', будут распознаваться при вводе, но косая черта будет использоваться на выходе (при преобразовании DATE в строку).
Информация, необходимая для улучшения ответа на этот вопрос - 1 st Edition.
Если то, что здесь не помогло, то рекомендую отредактировать ваш вопрос, включив в него:
- Схема таблицы.
- Несколько (2-4) строк данных, которые, по вашему мнению, должны быть выбраны, но не выделены.
- Информация о платформе и версии. Это может помочь снизить версию до уровня детализации IDS 11.50.FC4W1; иногда это имеет значение. Чаще всего, конечно, первые три цифры влияют на вещи.
Если ваша таблица большая (много столбцов), попробуйте выбрать ключевые столбцы (vis_mod_dt
, безусловно, самый важный). В идеале, вам не понадобятся полосы прокрутки на дисплее.
Убедитесь, что вы не включили конфиденциальную информацию.
Информация, необходимая для улучшения ответа на этот вопрос - 2 nd Edition
Я помогу вам, если вы обратите внимание на вопросы, которые я вам задаю. Я не могу помочь вам, если вы не обращаете внимание на вопросы, которые я задаю. И, пожалуйста, отредактируйте свой вопрос, а не добавляйте информацию в качестве «ответа».
Что такое схема таблицы? Из чего получается:
SELECT t.tabid, t.tabname, c.colno, c.colname, c.coltype, c.collength
FROM "informix".systables AS t, "informix".syscolumns AS c
WHERE t.tabid = c.tabid
AND t.tabname = "visit"
ORDER BY t.tabid, c.colno;
Что вы получаете от:
SELECT TODAY, TODAY-365 FROM "informix".systables WHERE tabid = 1;
У вас установлена переменная окружения DBDATE? Если да, то какова его стоимость?
- У вас установлены переменные окружения CLIENT_LOCALE или DB_LOCALE? Если да, то каковы их значения?
- Какую версию Informix вы используете?
- На какой платформе вы его используете?
- Какой язык или инструмент вы используете для выполнения запроса.
Примечание: если вы не можете копировать и вставлять запросы выше, то вам, вероятно, не нужно указывать процитированный «informix». атрибуты в системном каталоге; однако, как написано, запросы будут работать с любой существующей базой данных Informix - OnLine 5.x, SE 5.x или 7.x, IDS 7.x, XPS 8.x, IDS 9.x или 10.x или 11. х - и любой режим базы данных (незарегистрированный, зарегистрированный, режим ANSI). Я бы использовал нотацию JOIN, за исключением того, что некоторые старые версии не поддерживают ее - хотя для того, чтобы это стало проблемой, вам нужно использовать очень старые версии.