使用日期数据类型从 GetDate() 中删除时间信息可以吗?
通常我需要从 GETDATE()
中删除时间信息。我需要这个,因为我有一些 DateTime 字段,我知道我只存储日期信息,以便进行可靠的比较(MyDate < GETDATE()
),我需要从 GETDATE( )
)。当然,我可以在 MyDate
中使用 DATE
数据类型,但这对于新应用程序来说是可以的,而不是对于旧应用程序。
我曾经使用 CAST
来完成此操作,但由于在 SQL Server 2008 中还有 DATE
数据类型,因此它似乎更具可读性。
旧方法
DECLARE @Today DateTime
SET @Today = (CAST(FLOOR(CAST( GETDATE() AS FLOAT)) AS DATETIME))
select @Today
新方法
DECLARE @TodayDate Date
Set @TodayDate = GETDATE()
select @TodayDate
我可以采用第二种方法还是有任何警告? (当然我只用2008!)
Typically I need to remove time info from GETDATE()
. I need this because I have some DateTime fields where I know I am storing only date information so to make reliable comparisons (MyDate < GETDATE()
) I need to remove time information from GETDATE()
). Of course I could use the DATE
datatype in MyDate
, but this is ok for new applications, not for legacy ones.
I used to do it with CAST
, but since in SQL Server 2008 there is also the DATE
datatype it seems more readable.
Old approach
DECLARE @Today DateTime
SET @Today = (CAST(FLOOR(CAST( GETDATE() AS FLOAT)) AS DATETIME))
select @Today
New approach
DECLARE @TodayDate Date
Set @TodayDate = GETDATE()
select @TodayDate
May I go with the second or is there any caveat? (of coruse I use 2008 only!)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
没有任何警告。
No caveats. Indeed it is the best way according to this answer.