我如何与一个月和一年进行比较,而不是一个完整的日期?

Ors*_*son 3 sql t-sql sql-server sql-server-2008

我需要编写一个存储过程来允许某人搜索数据库.但是,我得到的只是一个月和一年的整数.db有月份和年份字段.但我无法弄清楚如何设置比较.

例如:我得到2008年3月和2010年6月.

我需要在数据库中搜索记录,其中日期(由月份和年份字段指定)介于两个日期之间.

编辑

给定两个Date输入,如何找到这些日期之间的所有记录?每条记录只有表示年份和月份的整数.

小智 5

以前的解决方案应该可行,但遗憾的是它们阻止在年和月列上使用索引.

你将不得不用艰难的方式来解决它:

SELECT  *
FROM    records
WHERE   Year > @StartYear
        OR ( Year = @StartYear
             AND Month >= @StartMonth)
/*(ommited end date check, it is same)*/
Run Code Online (Sandbox Code Playgroud)

另一种可能性是将计算日期列添加到源表

以这种方式存储日期是可疑的,并且从DB设计的角度来看可能是不正确的.考虑将日期存储在日期列中(如果确实需要),添加年和月的计算列.