2012-02-02 3 views
6

Может ли кто-нибудь помочь мне создать таблицу с датой сегодня плюс 30 дней. это право?Создание таблицы с текущей датой плюс 30 дней после текущей даты

создать образец таблицы DateToday DateTime не нулевой current_datetime по умолчанию(), dateafter30days DATETIME не нулевой CURRENT_DATE по умолчанию (+30)

логика, например, существует подписчики, что зарегистрированные в настоящее время, так что будет запись на база данных и истечение срока его регистрации - через 30 дней.

дату регистрации и дату истечения означая ..

Большое спасибо

Joey

ответ

1
create table SAMPLE 
(
    SUBSCRIBER_ID INT Primary Key, 
    REGISTER_DT  DATETIME NOT NULL, 
    EXPIRE_DT  DATETIME NOT NULL 
) 

вы можете обновить дату истечения срока, когда регистр для нового пользователя, как следовать.

INSERT INTO SAMPLE(SUBSCRIBER_ID,REGISTER_DT,EXPIRE_DT) 
    VALUES (1,GETDATE(), DATEADD(DAY,30,GETDATE()) 
+0

Привет я пытался, что уже ,, но можно поставить значение на создании сценария в качестве значения по умолчанию, как это создает образец таблицы ( SUBSCRIBER_ID INT Первичный ключ, REGISTER_DT DATETIME NOT NULL default (1, GETDATE()), EXPIRE_DT DATETIME NOT NULL по умолчанию DATEADD (DAY, 30, GETDATE())) –

1

Да, здесь вы пытаетесь. Когда вводятся новые данные подписчика, дата регистрации - текущая дата, истекающая дата - 30 дней после текущей даты. Ваш оператор sql вставки, не нужно упоминать эти два столбца (REGISTER_DT, EXPIRE_DT), эти два будут обновлены автоматически при вставке оператора.

на основе следующей структуры таблицы, ваша вставка заявление должно быть

INSERT INTO SAMPLE (SUBSCRIBER_NM) VALUES ('John'); 

-

поле оператор создания таблицы
CREATE TABLE [dbo].[SAMPLE](
     [SUBSCRIBER_ID] [int] IDENTITY(1,1) NOT NULL, 
     [SUBSCRIBER_NM] [nvarchar](50) NOT NULL, 
     [REGISTER_DT] [datetime] NOT NULL CONSTRAINT [DF_SAMPLE_REGISTER_DT] DEFAULT (getdate()), 
     [EXPIRE_DT] [datetime] NOT NULL CONSTRAINT [DF_SAMPLE_EXPIRE_DT] DEFAULT (dateadd(day,(30),getdate())), 
    CONSTRAINT [PK_SAMPLE] PRIMARY KEY CLUSTERED 
    (
     [SUBSCRIBER_ID] ASC 
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
    ) ON [PRIMARY] 
2

Вы можете использовать расчетные (и, возможно, настойчивый) для этого:

CREATE TABLE YourTableName 
(
Subscriber INT PRIMARY KEY, 
IssueDate DATETIME, 
ExpireDate AS DATEADD(DAY, 30, IssueDate) 
) 
+0

Спасибо :) за вашу помощь –

+0

@DatabaseAdmin Лучшее спасибо - всегда повышать и принимать ответ 8-) –

1

Создать стол и спусковой крючок на вставке * Таблица *

create table test 
(
sub_id int primary key, 
issueDate datetime, 
expDate datetime 
) 

CREATE TRIGGER test_trigger BEFORE INSERT ON `test` 
FOR EACH ROW SET NEW.issueDate = IFNULL(NEW.issueDate,NOW()), 
NEW.expDate= TIMESTAMPADD(DAY,30,NEW.issueDate) 
Смежные вопросы