我有一个收集从我们网站提交的表单的表格,但由于某种原因,当他们创建表格时,他们没有在表格中添加时间戳。我想让它输入输入记录的确切日期和时间。

我知道它在那里的某个地方,但我似乎找不到如何设置默认值(就像在访问中,你使用getNow()或Now()),但我不知道把它放在哪里。


当前回答

禁止在列上设置空值,并在getdate()列上设置默认值

/*Deal with any existing NULLs*/
UPDATE YourTable SET created_date=GETDATE() /*Or some sentinel value 
                                                '19000101' maybe?*/
WHERE created_date IS NULL


/*Disallow NULLs*/
ALTER TABLE YourTable ALTER COLUMN created_date DATE NOT NULL

/*Add default constraint*/
ALTER TABLE YourTable ADD CONSTRAINT
    DF_YourTable_created_date DEFAULT GETDATE() FOR created_date

其他回答

创建新表时的语法是:

CREATE TABLE MyTable
(
    MYTableID INT IDENTITY(1,1),

    CreateDate DATETIME NOT NULL CONSTRAINT DF_MyTable_CreateDate_GETDATE DEFAULT GETDATE()
)

这也是可行的:

CREATE TABLE Example(
...
created datetime default GETDATE()
);

Or:

ALTER TABLE EXAMPLE ADD created datetime default GETDATE();

在SQLPlus中,当创建一个表时,它就像as

SQL>创建表Test

 ( Test_ID number not null,
   Test_Date date default sysdate not null );

SQL> insert into Test(id) values (1);

 Test_ID Test_Date
       1 08-MAR-19

为了便于理解,我总结一下上面的答案:

假设这个表名为Customer 它有4列/少或多…

你想要向表中添加一个新列,每次当有insert…然后,这一栏记录了事件发生的时间。

解决方案:

向数据类型为datetime的表中添加一个新列,假设timepurchase是新列。

然后执行如下alter命令:

ALTER TABLE Customer ADD CONSTRAINT DF_Customer DEFAULT GETDATE() FOR timePurchase

这对我很有用……

ALTER TABLE [accounts] 
 ADD [user_registered] DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ;