直到新的一年,我没有遇到任何问题所以我认为这是一个YEARWEEK问题,但我想我已经确认它不是。
我的原始陈述不再有效(返回0结果):
SELECT t1.*, t2.family
FROM report_tables.roc_test_results as t1
LEFT JOIN report_tables.roc_capacity_standards as t2
ON t1.item=t2.part_number
WHERE YEARWEEK(t1.date_created)='201301'
AND t1.operation='TEST'
AND t1.result='Passed'
但奇怪的是,这个完美无缺(返回22个结果):
SELECT t1.*, t2.*
FROM report_tables.roc_test_results as t1
LEFT JOIN report_tables.roc_capacity_standards as t2
ON t1.item=t2.part_number
WHERE YEARWEEK(t1.date_created)='201301'
AND t1.operation='TEST'
AND t1.result='Passed'
有谁知道为什么这不再有效?唯一的区别是我在第二个查询中包含了t2的所有列
答案 0 :(得分:1)
不应使用Yearweek(日期),而应使用Yearweek(date,3)根据ISO标准返回年份和星期。
如果您尝试这样做:
SELECT yearweek('2013-01-01'), yearweek('2013-01-05')
201253; 201253
您会看到此间隔被视为2012年第53周的一部分,1月6日被视为2013年的第一周,而根据ISO标准,它们是2013年第一周的一部分:
SELECT yearweek('2013-01-01',3), yearweek('2013-01-06',3)
201301; 201301
我认为这可能是问题所在。另请参阅this answer类似的问题。