的WHERE
条款是错误的,它必须遵循表引用和JOIN操作。
事情是这样的:
FROM tartikel p1
JOIN tartikelpict p2
ON p1.kArtikel = p2.kArtikel
AND p2.nNr = 1
WHERE p1.dErstellt >= DATE(NOW()) - INTERVAL 7 DAY
ORDER BY p1.kArtikel DESC
编辑(三加年后)
以上基本上回答了这个问题:“我想一个WHERE子句添加到我的查询和现在该查询返回一个错误,我该如何解决它?“
至于有关书面检查的“过去7天”的日期范围条件下,问题...
这真的取决于解释说明,表中的列的数据类型是什么(DATE或DATETIME)以及可用的数据......应该返回的内容。总结:一般的方法是为日期/日期时间范围和该范围的“结束”标识“开始”,并在查询中引用它们。让我们考虑一些更简单的...所有行为“昨天”。
如果我们的列是DATE类型的。在我们将一个表达式并入查询之前,我们可以用一个简单的SELECT
SELECT DATE(NOW()) + INTERVAL -1 DAY
进行测试,并验证返回的结果是我们所期望的。然后,我们可以使用相同的表达在WHERE子句,比较它与DATE列是这样的:
WHERE datecol = DATE(NOW()) + INTERVAL -1 DAY
对于DATETIME或TIMESTAMP列,我们可以使用>=
和<
不等式比较,以指定一个范围
WHERE datetimecol >= DATE(NOW()) + INTERVAL -1 DAY
AND datetimecol < DATE(NOW()) + INTERVAL 0 DAY
对于“过去7天”,我们需要知道从现在起7天以后的这个意思......例如在过去的7 * 24小时,包括在比较的时候分量,...
WHERE datetimecol >= NOW() + INTERVAL -7 DAY
AND datetimecol < NOW() + INTERVAL 0 DAY
在过去7个完整的天,不包括
WHERE datetimecol >= DATE(NOW()) + INTERVAL -7 DAY
AND datetimecol < DATE(NOW()) + INTERVAL 0 DAY
或过去的六年完成日,加今天到目前为止今天...
WHERE datetimecol >= DATE(NOW()) + INTERVAL -6 DAY
AND datetimecol < NOW() + INTERVAL 0 DAY
我建议测试在右侧的表达式,在SELECT语句中,我们可以代替使用用户定义的变量NOW()进行测试,而不是被捆绑到什么NOW()返回,所以我们可以测试边界,跨越周/月/年边界等等。
SET @clock = '2017-11-17 11:47:47' ;
SELECT DATE(@clock)
, DATE(@clock) + INTERVAL -7 DAY
, @clock + INTERVAL -6 DAY
一旦我们有返回的工作价值观的表达“开始”和“结束”为我们的具体使用情况,就是我们所说的“过去7天”,我们可以使用这些表达在范围比较WHERE子句。
(有些开发人员喜欢使用DATE_ADD
和DATE_SUB
职能到位+ INTERVAL val DAY/HOUR/MINUTE/MONTH/YEAR
语法。
和MySQL提供了一些方便的功能与DATE,DATETIME和TIMESTAMP数据类型的... DATE工作,LAST_DAY,
有些人希望能够计算在SQL查询的开始和其他代码结束,供应字符串字面量,使得提交给数据库的查询是
WHERE datetimecol >= '2017-11-10 00:00'
AND datetimecol < '2017-11-17 00:00'
而且这种方法也适用。 (我更倾向于将那些字符串文字明确投进去DATETIME,无论是与CAST,转换或只是+间隔招...
WHERE datetimecol >= '2017-11-10 00:00' + INTERVAL 0 SECOND
AND datetimecol < '2017-11-17 00:00' + INTERVAL 0 SECOND
上述所有假设我们现在存储“日期”,在适当的DATE,DATETIME和/或TIMESTAMP数据类型,并且不将它们以各种格式(例如'dd/mm/yyyy'
,m/d/yyyy
,朱利安日期)或以零星非规范格式存储为字符串,或者作为从该纪元开始以来的秒数,这个答案需要更长的时间
那就是我读过的文章,并在我的代码中使用 – karadayi
你不想要'不要解释你得到了什么错误,或者说这不起作用。除非这个问题得到改善,否则将会关闭一个重复的问题。 –
我没有得到任何输出(没有错误,没有结果)如果我用'DATE(dErstellt)>(NOW() - INTERVAL 7 DAY)' – karadayi