0

直到新年我都没有遇到过这个问题,所以我认为这是一个 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 中的所有列

4

1 回答 1

1

而不是使用 Yearweek(date),您应该使用根据 ISO 标准返回年份和星期的 Yearweek(date,3)。

如果你试试这个:

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

我认为这可能是问题所在。另请参阅此对类似问题的答案。

于 2013-01-09T13:35:43.860 回答