【问题标题】:Using Date datatype for removing time info from GetDate() is ok?使用 Date 数据类型从 GetDate() 中删除时间信息可以吗?
【发布时间】:2011-04-27 07:32:20
【问题描述】:

通常我需要从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 年!)

【问题讨论】:

  • 不清楚你需要什么。请用列描述表格并写下您要更改的内容。
  • 我只需要 TODAY DATE 作为参考,因为我在 WHERE 条件下使用它,例如 where MyTable.Date >= @Today。如果我使用 where MyTable.Date >= GetDate() 我不会得到正确的结果,因为 GetDate 还包含时间信息。
  • MyTable.Date>=CAST(GetDate() as date) 就足够了。
  • 是的,你是对的,这也是一种选择。我正在寻找“今天没有时间信息”的紧凑版本的原因是在同一个查询中我可能会多次使用它。所以想象一下,比起CAST(GETDATE() AS DATE),我更喜欢写@Today 10 倍。

标签: sql-server sql-server-2008 date getdate


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-06
    • 2014-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-22
    • 2014-12-03
    相关资源
    最近更新 更多