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

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


当前回答

创建新表时的语法是:

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

    CreateDate DATETIME NOT NULL CONSTRAINT DF_MyTable_CreateDate_GETDATE DEFAULT 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

这也是可行的:

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

Or:

ALTER TABLE EXAMPLE ADD created datetime default GETDATE();

在SQL Server中的该表中,指定该列的默认值为CURRENT_TIMESTAMP。 该列的数据类型可以是datetime或datetime2。

e.g.

Create Table Student
(
  Name varchar(50),
  DateOfAddmission datetime default CURRENT_TIMESTAMP
);

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

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

而标记的答案是正确的:

为你的列添加默认的GETDATE()约束

在向列中添加默认datetime值时,应始终注意时区。

例如,这个datetime值被设计用来指示一个成员何时加入一个网站,而你希望它被显示回给用户,GETDATE()将给你服务器时间,因此可以显示差异,如果用户在不同的地区服务器。

如果你希望处理国际用户,在某些情况下最好使用GETUTCDATE(),它:

返回当前数据库系统时间戳为datetime值。数据库时区偏移不包括在内。该值表示当前UTC时间(协调世界时)。此值来自运行SQL Server实例的计算机的操作系统。

ALTER TABLE YourTable ADD CONSTRAINT DF_YourTable DEFAULT GETUTCDATE() FOR YourColumn

在检索值时,前端应用程序/网站应该将该值从UTC时间转换为请求它的用户的地区/文化。