2012-02-02 34 views
6

今日の日付と30日のテーブルの作成方法を教えてもらえますか? はこの権利ですか?現在の日付と現在の日付の30日後のテーブルの作成

テーブルSAMPLE datetodayのdatetime NOT NULLデフォルトcurrent_datetime()を作成し、 dateafter30daysがnullのデフォルトCURRENT_DATE(30)

をしませDATETIMEロジックは、それが上の記録となりますので、今すぐ登録された加入者が存在し、たとえばありますデータベースと彼の登録の有効期限は30日後です。有効期限の登録と日付の日付を意味

..

多くのおかげ

ジョーイ

答えて

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

こんにちは私はすでにあることを試してみました,,それは、このようなデフォルト値がテーブルSAMPLE ( SUBSCRIBER_ID INT主キー、 REGISTER_DT DATETIME NOT NULLを作成すると作成したスクリプトに値を入れることが可能です EXPIRE_DT DATETIME NOT NULLデフォルトDATEADD(DAY、30、GETDATE())) –

1

はい、ここで試してみてください。新しい加入者データが挿入されると、登録日は現在の日付、有効期限は現在の日付から30日後です。あなたのinsert sql文は、これらの2つのカラム(REGISTER_DT、EXPIRE_DT)について言及する必要はありません。これらの2つは、挿入文のautoで更新されます。

テーブル構造を以下に基づいて、あなたのinsert文が

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ベストありがとうございました。 –

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) 
関連する問題