将DateTime数据库字段设置为"Now"

Thi*_*zig 85 vb.net sql-server

在VB.net代码中,我使用SQL参数创建请求.我将DateTime参数设置为DateTime.Now值,我的请求会是什么样的?

UPDATE table SET date = "2010/12/20 10:25:00";
Run Code Online (Sandbox Code Playgroud)

要么

UPDATE table SET date = GETDATE();
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,我确信每条记录都将设置为完全相同的时间.在第二种情况下,它取决于DBMS如何处理请求.这引出了我的第二个问题:SQL Server在使用NOW()更新大表时是否设置了相同的日期和时间?

编辑:由GETDATE()替换NOW()(在SQL Server中不存在).

Ode*_*ded 158

在SQL中,您需要使用GETDATE():

UPDATE table SET date = GETDATE();
Run Code Online (Sandbox Code Playgroud)

没有NOW()功能.


回答你的问题:

在大型表中,由于对每行评估函数,因此最终将获得更新字段的不同值.

所以,如果你的要求是将它设置为同一天,我会做这样的事情(未经测试):

DECLARE @currDate DATETIME;
SET @currDate = GETDATE();

UPDATE table SET date = @currDate;
Run Code Online (Sandbox Code Playgroud)


Don*_*mon 20

GETDATE()的替代方法是CURRENT_TIMESTAMP.完全相同的事情.

  • `CURRENT_TIMESTAMP`实际上是SQL标准,因此有些人可能认为这是首选语法. (7认同)

Adr*_*der 7

使用GETDATE()

返回当前数据库系统时间戳作为没有数据库时区偏移的日期时间值.此值派生自运行SQL Server实例的计算机的操作系统.

UPDATE table SET date = GETDATE()
Run Code Online (Sandbox Code Playgroud)