我想提前一周比一年中的当前一周,但我的SQL查询返回null。这是我的查询
select date_sub(yearweek('2014-01-01'),INTERVAL 1 week)
此查询有什么问题
答案 0 :(得分:3)
如果您希望在约会之前获得YEARWEEK
周,则可以执行以下操作:
注意:YEARWEEK
会产生6位数字,前4位数字是星期年份,后2位数字是星期数字。
SELECT YEARWEEK('2014-01-01' - INTERVAL 1 WEEK)
如果您需要在指定日期前一周获得date
,那么:
SELECT '2014-01-01' - INTERVAL 1 WEEK
答案 1 :(得分:0)
试试这个
select date_sub(date('2014-01-01'),INTERVAL 1 week)
答案 2 :(得分:0)
试试这个: -
DATE_SUB(date('2014-01-01'), INTERVAL 7 DAY)
或
SELECT '2014-01-01' - INTERVAL 1 WEEK
答案 3 :(得分:0)
问题在于DATE_SUB
将日期作为第一个争论,但是一周返回yyyyww
,即不是日期。所以这个:
SELECT yearweek('2014-01-01');
返回201352
,然后将其隐式转换为日期,因为它不是结果为null的日期。你可以通过这样做来复制它:
SELECT DATE(yearweek('2014-01-01'));
因此,如果您从NULL
减去一周,结果也是NULL
。
修复方法是首先减去一周,然后得到年份周:
SELECT yearweek(date_sub('2014-01-01', INTERVAL 1 WEEK));
结果是201351
。
答案 4 :(得分:0)
Select DatePart(Week, Date add(day,-7,convert(date time,'01-jan-2014')))
如果您正在寻找别的东西,请告诉我。
答案 5 :(得分:0)
SELECT * FROM [table] WHERE WEEKOFYEAR(date) = WEEKOFYEAR(NOW()) - 1;