2014-03-06 89 views
2

我想提前一周,然后一周的当前周,但我的SQL查询返回null。这里是我的查询从当年的当周减去一周

select date_sub(yearweek('2014-01-01'),INTERVAL 1 week) 

什么是错的这个查询

回答

0

试试这个

select date_sub(date('2014-01-01'),INTERVAL 1 week) 
0

试试这个: -

DATE_SUB(date('2014-01-01'), INTERVAL 7 DAY) 

SELECT '2014-01-01' - INTERVAL 1 WEEK 
3

如果您想获得日期前一周的YEARWEEK,您可以这样做: 注:YEARWEEK结果为6位数字,前4位数字为周年,后2位数字为周数。

SELECT YEARWEEK('2014-01-01' - INTERVAL 1 WEEK) 

如果你需要得到date这是一个给定的日期之前一个星期,然后:

SELECT '2014-01-01' - INTERVAL 1 WEEK 
0

的问题是,DATE_SUB需要一个日期作为第一arguement,但今年一周返回yyyyww即不是约会。所以这个:

SELECT yearweek('2014-01-01'); 

返回201352,这是再隐式浇铸为日期,因为它不是一个日期的结果为空。您可以通过执行复制这样的:如果你减去,每周从NULL

SELECT DATE(yearweek('2014-01-01')); 

所以结果也是NULL

解决方法是先减去一周,然后拿到年终周:

SELECT yearweek(date_sub('2014-01-01', INTERVAL 1 WEEK)); 

,结果是201351

0

你在寻找周数吗???如果是的话,请试试这个,如果它能为你工作

Select DatePart(Week, Date add(day,-7,convert(date time,'01-jan-2014'))) 

请让我知道,如果你正在寻找别的东西。

0
SELECT * FROM [table] WHERE WEEKOFYEAR(date) = WEEKOFYEAR(NOW()) - 1;