我如何为上一个日期编写代码?

时间:2014-03-13 01:36:59

标签: sql date time

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日

2 个答案:

答案 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 1where rownum = 1fetch first 1 rows,甚至可能是其他数据库。