【问题标题】:sqlite query due datesqlite查询截止日期
【发布时间】:2019-10-14 02:44:32
【问题描述】:

我正在尝试在 sqlite 中进行查询,其中显示已超过到期日的发票。 我试过了:

SELECT i.invoice_ID AS 'Invoice ID', i.due_date AS 'Due Date', i.invoice_total_amount AS 'Invoice Total'
FROM invoice as i 
WHERE date(due_date) > date('now');

但这不起作用。我怎样才能正确地做到这一点?

更新:

我的表只包含:

INSERT INTO invoice VALUES (1, 1, 1, 2007-02-01, 2007-02-27, 10028);

我的查询结果是:

【问题讨论】:

  • 请澄清: 1. 你的桌子是什么样子的。 2.“不起作用”是什么意思?语法错误?返回了错误的数据?
  • 提示:到期日期会比现在短。
  • 提示:为什么要在插入语句中减去数字?
  • 您在不应该使用单引号的地方使用了:列的别名(最好使用反引号或方括号),并且在应该使用的地方不要使用单引号:对于像 '2007-02-01' 这样的日期.
  • @Shawn - 真正有趣的问题是,为什么结果不是 1970 而不是 1978?

标签: sql sqlite date


【解决方案1】:

您正在查询比现在更大的到期日;这意味着相反(未超过到期日期的调用)

使用WHERE date(due_date) < date('now');

更新:

根据有问题的更新,您插入的值是错误的。您正在尝试使用Text format for date,但您没有引用它,因此您最终使用了整数格式。相反,引用以获取文本:

INSERT INTO invoice VALUES (1, 1, 1, '2007-02-01', '2007-02-27', 10028);

【讨论】:

  • 是的,我明白了。请查看更新,我仍然没有得到正确的结果
  • 我终于明白你的意思并解决了。谢谢
  • SQL 对字符串使用单引号,顺便说一句。
猜你喜欢
  • 2012-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多