[英]sql query “where clause” with two date columns
在 Excel 中,我可以将 InvDate 列过滤为“ before 01-12-20 ”并将 DATE 列过滤为“ Last Month ”,然后它给我的预期结果如下:
所以,我试过 SQL 像这样:
SELECT DATE, InvDate FROM `MyTable`
WHERE InvDate < '2020-12-01'
AND DATE >= '2020-12-01'
AND DATE <= '2020-12-31'
所以我认为第一个“地点”是指:所有发票日期在 2020 年 12 月 1 日之前,
第二个和第三个“地点”是指:2020 年 12 月内(2020 年 12 月 1 日至 2020 年 12 月 31 日之间)的所有付款日期,所以我认为结果将是所有发票日期(日期为任何月份但 2020 年 12 月之前)于 2020 年 12 月付款,但结果如下所示:
表列的 InvDate 和 DATE 都是日期格式。
我想知道我该怎么做 SQL。
任何形式的回应将不胜感激。
提前谢谢你。
This question should include more details and clarify the problem.
问题是我写的 SQL 无法得到预期的结果。
预期的结果是获得 2020 年 12 月付款的 2020 年 12 月之前的发票日期。换句话说:“这是 12 月 20 日之前的发票日期在 2020 年 12 月 20 日付款”
关于“更多细节”,我很抱歉,因为我不知道如何描述我的情况开始更详细。 我应该提供数据库主机、用户名和密码吗?
您的结果表明,您的行实际上具有invoicedate
的NULL
值。 如果该列被赋予默认值0
,那么您将看到您所做的日期 - 或者该值是否被显式插入。 这是一个例子。
MySQL 的更新版本不允许将'0000-00-00'
作为date
值,除非您使用默认设置。
您可以通过回到很远的时间并将其添加到where
来过滤掉它们:
SELECT DATE, InvDate FROM `MyTable`
WHERE InvDate < '2020-12-01' AND
InvDate >= '1900-01-01' AND
DATE >= '2020-12-01' AND
DATE < '2021-01-01';
请注意,我在date
比较中切换了不等式。 这使得切换到不同月份变得更容易——您不必记住该月的最后日期。
看起来 0000-00-00 在 invdate 中用于表示发票日期未知或不适用。
您可以添加: AND invdate <> '0000-00-00'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.