SQL Server中与MySQL的NOW()相当的函数是什么?

227

我是一个MySQL开发人员,现在正在做一个SQL Server项目,尝试让一个datetime字段显示当前时间。在MySQL中,我会使用NOW()函数,但在SQL Server中它不被接受。

INSERT INTO timelog (datetime_filed) VALUES (NOW())
5个回答

252

getdate()getutcdate()


91
getdate() 

这是直接等效的,但你应该始终使用UTC日期时间

getutcdate()

无论你的应用程序是否跨越时区运行,否则您会在春秋季节转换时存在日期计算错误的风险。


有没有任何时区更改跨越日期更改的地方?在PST这里,时区更改总是在午夜过后几个小时发生。 - Rei Miyasaka

34

29

如果你希望更符合ANSI标准(尽管在不同的数据库供应商之间移植代码可能是您最不用担心的事情),你也可以使用CURRENT_TIMESTAMP。在底层,它与GetDate()完全相同(有关详细信息,请参见此问题)。

然而,GetUTCDate()没有ANSI等效项,如果您的应用程序涉及多个时区,则应该使用它...


5
我喜欢CURRENT_TIMESTAMP,因为它可以在MySQL、SQL Server、Oracle等数据库中使用。正如你所说,这不是我们最担心的问题,但它总是有帮助的。 - Álvaro González

0
以下是在SQL Server中可以使用的函数,代替NOW():
1. SYSDATETIME() 2. GETDATE() 3. GETUTCDATE() 4. CURRENT_TIMESTAMP
这些函数提供几乎完全准确的日期和时间,而SYSDATETIME则以毫秒为单位提供更精确的时间。
查询: SELECT SYSDATETIME()
输出: 2022-12-21 19:38:49.4181976
查询: SELECT GETDATE () | GETUTCDATE() | CURRENT_TIMESTAMP
输出: 2022-12-21 19:38:49.413

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接