SQL Server 默认日期时间戳?

Posted

技术标签:

【中文标题】SQL Server 默认日期时间戳?【英文标题】:SQL Server default date time stamp? 【发布时间】:2011-08-09 20:25:27 【问题描述】:

我有一个字段,当插入某些内容时,我希望它获取当前日期和时间并将其插入数据库。有没有办法获取日期和时间,并将其设置为默认值?

目前默认值为: (getdate()) 仅设置日期。我该如何设置时间?

【问题讨论】:

你需要指定你使用什么SQL实现... @JNK:你也为此创建了一个宏吗? @voodoo 还没有,但我很接近 您的列是什么数据类型? getdate() 确实返回日期和时间,但如果您使用数据类型 date,您将只存储日期,或者如果您使用的 varchar() 不够长。 @mikael - 滚出我的脑袋。 【参考方案1】:

GETDATE() 是 SQL Server 中的日期和时间。

运行SELECT GETDATE() 来验证这一点。

您的字段的数据类型是什么?如果是DATE,那么它也不会保存时间值。

【讨论】:

不想使用当前时间怎么办? 问题是关于返回当前日期和时间。你到底想要什么/【参考方案2】:

一种简单的方法是给字段一个默认约束:

create table YourTable 
    (
    ... other columns ...
    CreateDt datetime default getdate(),
    ... other columns ...
    )

这种方法的一个缺点是您可以通过在insert 子句中指定它来覆盖该值。

【讨论】:

【参考方案3】:

我个人想使用 GETUTCDATE() 而不是 GETDATE() 以避免混淆。

【讨论】:

我也建议这样做。如果使用本地时间,很难摆脱它。【参考方案4】:

SYSDATETIME() 将获取当前日期和时间。

确保列的数据类型是datetime,而不仅仅是date,否则它将无法保存日期时间。

【讨论】:

【参考方案5】:

大多数 SQL 实现(引擎)都具有CURRENT_TIMESTAMP 函数。

【讨论】:

以上是关于SQL Server 默认日期时间戳?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 SQL Server 的时间戳列转换为日期时间格式

SQL Server 2008 行插入和更新时间戳

SQL Server - 以 HH:MM:SS 格式计算两个日期时间戳之间的经过时间

SQL Server 中可读格式的时间戳

数据库SQL SERVER 2008 R2 时间戳如何转换成时间格式

SQL Server 2008 中的 While 循环遍历日期范围,然后插入