首页 文章

SQL Server将varchar转换为datetime以选择日期范围

提问于
浏览
0

我需要从MSSQL数据库中选择一个日期范围,但是s.ended字段尚未设置为日期时间字段 . 它已设置为varchar,存储日期的格式为 d/m/Y .

我已经尝试了下面的条款,但我收到以下错误消息 . 有没有人知道如何在不改变数据库设计的情况下解决这个问题?

Where子句:

WHERE  
   (S.ended > CONVERT(DateTime, '28/07/2012 00:00:01', 103)) 
   AND (S.ended < CONVERT(DateTime, '28/08/2012 00:00:01', 103))

错误信息:

将varchar数据类型转换为日期时间数据类型会导致超出范围值 .

3 回答

  • 1

    试试这个:

    WHERE  
       (CONVERT(DateTime, S.ended, 103) > CONVERT(DateTime, '28/07/2012 00:00:01', 103)) 
       AND (CONVERT(DateTime, S.ended, 103) < CONVERT(DateTime, '28/08/2012 00:00:01', 103))
    
  • -1

    在与 Datetime 值进行比较之前, S.ended 可能没有采用正确的格式 .

    所以首先将该值转换为Datetime然后进行比较 .

  • 1
    WHERE (S.ended > CONVERT(DateTime, '28/07/2012 00:00:01', 103)) AND (S.ended < CONVERT(DateTime, '28/08/2012 00:00:01', 103))
    

    也许将日期更改为美国风格的日期而不是 '28/07/2012 00:00:01' 试试 '07/28/2012 00:00:01'

相关问题