Страница 1 из 1

Дата и время в Default

Добавлено: 24 ноя 2005, 06:21
Fed
Напишите, пожалуйста, пример того как вставить в качестве literal дату при объявлении столбца. Чего-то типа этого:

Код: Выделить всё

CREATE TABLE Table1 (
ID INTEGER,
DATE1 DATE DEFAULT DATE)
Меня интересует, что вместо DATE в последней строчке писать, а то в докуме я чего-то не нашел. А время также не получиться? Только триггером или хранимой процедурой надо?

Добавлено: 24 ноя 2005, 12:16
Merlin
Встречный вопрос - а что туда будешь писать в триггере или хранимой процедуре?

Добавлено: 24 ноя 2005, 12:43
svalx
CREATE TABLE Table1 (
ID INTEGER,
DATE1 DATE DEFAULT CURRENT_DATE)

Во всех новых записях, если явно не будет задано значение поля DATE1, то ему перед вставкой будет присвоено значение текущей даты.

У меня тоже вопрос в тему:

CREATE TABLE Table1 (
ID INTEGER,
DATE1 DATE DEFAULT CURRENT_DATE+1) - не работает.

Есть ли какая-нибудь возможность задавать в качестве значения по умолчанию для домена или непосредственно для поля таблицы вычисляемые значения (по смыслу как примере CURRENT_DATE+1)?

Добавлено: 24 ноя 2005, 13:18
Fed
Я в принципе так и полагал. svalx, тут я пока искал ответ на форуме, наткнулся - попробуй писать:

Код: Выделить всё

Current_Date, 'tomorrow'
Спасибо. А что со временем?

Добавлено: 24 ноя 2005, 13:29
svalx
Fed писал(а):А что со временем?
В dialect 3 можно пользоваться константами

Код: Выделить всё

CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_DATE
соответственно для полей типа TIME, DATE и TIMESTAMP.

Но меня интересует общий принцип. Например нужна для поля дата по умолчанию равная "Сегодня + 6 месяцев"...

Добавлено: 24 ноя 2005, 13:33
Fed
Да, спасибо. Я как раз про время нашел. А общий принцип... не знаю.

Добавлено: 24 ноя 2005, 14:01
svalx
Скорее всего задать значением по умолчанию для поля произвольную (по отношения к текущей) дату можно только с помощью триггера:
Код работает:

Код: Выделить всё

SET TERM ^ ;
CREATE TRIGGER "Table1_BI" FOR "Table1"
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW."DATE1" IS NULL) THEN
    NEW."DATE1" = current_date + 1;
 END
^
SET TERM ; ^
Думал, что можно проще...