【问题标题】:SQL Server query where DATETIMESQL Server 查询 DATETIME 所在的位置
【发布时间】:2024-04-17 14:00:01
【问题描述】:

我收到了这个查询:

select IDS as data 
from dbo.SKz 
where dbo.SKz.DatSave >= 2008-12-20

它工作正常。但是当我想按小时和分钟查询时:

select IDS as data 
from dbo.SKz 
where dbo.SKz.DatSave >= 2008-12-20 23:59:59

我收到一个错误:

消息 102,第 15 级,状态 1,第 1 行
'23' 附近的语法不正确。

DatSavedatetime 列。来自行的示例 = 2008-12-26 13:44:37.000

问题出在哪里?谢谢你。

【问题讨论】:

  • 缺少引号,'2008-12-20 23:59:59'
  • 第一个查询不像你想象的那样工作... 2008-12-20 = 1976.
  • 谢谢你,用引号可以工作:)
  • 在输入日期时间值时,还要检查您的输入格式是否与语言无关。在这种情况下,你没问题。看到这个karaszi.com/SQLServer/info_datetime.asp#DtFormatsInput

标签: sql sql-server tsql datetime


【解决方案1】:

你必须在它周围加上引号。

select IDS as data from dbo.SKz WHERE dbo.SKz.DatSave>= '2008-12-20 23:59:59'

【讨论】:

    【解决方案2】:

    你需要引号。但是,我强烈推荐以下两个之一:

    select IDS as data 
    from dbo.SKz 
    where dbo.SKz.DatSave >= '2008-12-21' 
    

    或:

    select IDS as data 
    from dbo.SKz 
    where dbo.SKz.DatSave >= dateadd(day, 1, '2008-12-20')
    

    我猜你真的不想要午夜前一秒的日期/时间值。

    【讨论】:

      最近更新 更多