sql - 使用单独的日期部分字段进行日期比较

时间:2013-09-12 18:03:17

标签: sql sql-server

我有一个statictics表,它使用日期部分的单独字段存储统计信息:

  

dayNumber
  monthNumber
  yearNumber

当我需要特定日期时,这很有用。

我想知道如何处理这个问题,当我需要一个日期范围时,例如在这个日期之间,到那个日期。

非常感谢!

2 个答案:

答案 0 :(得分:3)

   CAST(
    CAST(yearNumber as char(4)) 
    + '-'
    + CAST(monthNumber as char(2)) 
    + '-'
    + CAST(dayNumber as char(2)) 
  as smalldatetime) 
  BETWEEN @StartDate and @EndDate 

答案 1 :(得分:1)

加强zfus评论以查看Charles Bretana's answer,您可以使用DATEADDWHERE子句中构建比较日期:

...
WHERE DATEADD(yy, yearnumber - 1900,  
              DATEADD(m, monthnumber - 1, daynumber - 1))
      BETWEEN @StartDate AND @EndDate;

SQL fiddle