date , rate
1/2/2014 12:15:00.0000 PM, abc
8/2/2014 12:15:00.0000 PM, efg
etc...
假设我有每周更新一次的数据,例如:1/2/2014是更新日期,第二周将是2014年8月2日等... condition:我想在sql中编写代码,如果客户端在2014年4月2日选择日期,它将选择在2014年1月1日显示数据。
我或多或少地尝试过这样的查询:
SELECT rate,date FROM mytable WHERE year(date)=2014 AND month(date)=2 AND day(date)=4
但它给我空数据,因为2014年4月2日没有数据,我希望查询可以显示上一个日期的数据,即2014年1月1日
答案 0 :(得分:0)
select t.* from table t where
t.date between dateadd(dd,-7,t.date) and dateadd(dd,7,t.date)
会转换为
select t.* from table where
4/2/2014 between 3/26/2014 and 4/9/2014
有效吗?
答案 1 :(得分:0)
您没有指定正在使用的数据库或数据类型。我假设数据类型确实是日期。以下查询给出了这个想法:
SELECT rate, date
FROM mytable
WHERE date <= '2014-02-04'
ORDER BY date desc
LIMIT 1;
以上给出了指导。日期常量的语法可能因数据库而异。并且,所有数据库都不支持limit 1
,因此可能是top 1
或where rownum = 1
或fetch first 1 rows
,甚至可能是其他数据库。