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

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


当前回答

这也是可行的:

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

Or:

ALTER TABLE EXAMPLE ADD created datetime default GETDATE();

其他回答

这也可以通过SSMS GUI来完成。

将您的表放入设计视图(在对象资源管理器中右键单击表-> design) 向表中添加一个列(如果已经存在,则单击要更新的列) 在“列属性”中输入“默认值”或“(getdate())” 绑定字段如下图所示

禁止在列上设置空值,并在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

假设您为注册系统创建了一个数据库表。

IF OBJECT_ID('dbo.registration_demo', 'U') IS NOT NULL 
  DROP TABLE dbo.registration_demo; 

CREATE TABLE dbo.registration_demo (
    id INT IDENTITY PRIMARY KEY,
    name NVARCHAR(8)
);

现在有一些人注册了。

INSERT INTO dbo.registration_demo (name) VALUES
    ('John'),('Jane'),('Jeff');

然后你意识到你需要一个时间戳来记录它们注册的时间。

如果这个应用程序被限制在地理上本地化的区域,那么你可以使用GETDATE()来使用本地服务器时间。否则,您应该注意Tanner对全球受众的考虑,将GETUTCDATE()作为默认值。

在一条语句中添加具有默认值的列,如下所示。

ALTER TABLE dbo.registration_demo
ADD time_registered DATETIME DEFAULT GETUTCDATE();

我们再找一个注册者,看看数据怎么样。

INSERT INTO dbo.registration_demo (name) VALUES
    ('Julia');

SELECT * FROM dbo.registration_demo;

Id名称time_registered 1约翰·NULL 2 Jane NULL 3杰夫·NULL 4 Julia 2016-06-21 14:32:57.767

在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

这也是可行的:

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

Or:

ALTER TABLE EXAMPLE ADD created datetime default GETDATE();