我目前正在使用
Convert(varchar, Getdate(), 101)
仅将系统日期的日期部分插入我的 sql server 数据库表之一。我的问题是:这是正确的方法还是有其他更好的方法来做到这一点?
我目前正在使用
Convert(varchar, Getdate(), 101)
仅将系统日期的日期部分插入我的 sql server 数据库表之一。我的问题是:这是正确的方法还是有其他更好的方法来做到这一点?
我不明白您为什么要将GETDATE()
输出(DATETIME
已经是)转换为 a VARCHAR
,然后 SQL Server 会在再次插入时将其转换回DATETIME
。
只需使用:
INSERT INTO dbo.YourTable(SomeDateTimeColumn)
VALUES(GETDATE())
如果您正在执行该转换以摆脱 的时间部分,则DATETIME
最好:
DATE
数据类型(在 SQL Server 2008和更新版本中可用)仅存储DATE
(无时间)如果您使用的是 SQL Server 2005或更早版本,请改用此转换 - 应该比两次转换更有效!
INSERT INTO dbo.YourTable(SomeDateTimeColumn)
VALUES(DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0))
更新:做了一些性能测试,在这种特殊情况下,似乎 SQL Server 需要做的工作量实际上是相同的 - 无论您是否使用convert to varchar 剥离时间并返回 datetime方法你已经有了,或者你是否正在使用我的get the number of days since date 0方法。最后好像没什么区别。
然而,最好的解决方案仍然是:如果您只需要日期- 使用类型的列DATE
(在 SQL Server 2008GETDATE()
和更新版本中)并完全保存对输出的任何转换或操作。