【发布时间】:2015-05-30 15:38:02
【问题描述】:
我如何退回从今天起最后一个约会日期是 11 个月前的所有客户?还是从今天起一个月内的日期起 12 个月前?
第一个语句在我从_date 获取约会并将其与当前日期进行比较并返回明天发生的所有约会时起作用:
SELECT appointment.id,
appointment.from_date
WHERE (julianday('now') - julianday(appointment.from_date)) = 1
但是对于第二个语句,我不知道如何返回所有最后一次约会日期是距当前日期 11 个月前的客户?
SELECT customer.id,
customer.last_appointment_date
FROM customer
WHERE datediff(month, customer.last_appointment_date, DATEADD(month, getDate())) = 12
datediff() 不起作用,因为我使用的是 SQLite,它不是一个可识别的函数。
任何帮助将不胜感激。
编辑:我在我的 netbeans 代码中运行这些查询我正在使用 sqllitejdbc 驱动程序通过准备好的语句运行它们
我已经编辑了,因为我正在运行 netbeans,每次我使用 datediff(month, customer.last_appointment_date, DATEADD(month, getDate())) = 12 它返回的月份不是一个有效的列 - 它不会将它识别为有效的日期部分?
返回:原因:java.sql.SQLException: [SQLITE_ERROR] SQL 错误或缺少数据库(没有这样的列:月)
【问题讨论】:
-
我在这两个语句中都看到了语法错误。你确定这是你使用的sql吗?您使用的是什么 DBMS?
-
尝试在第二个查询中删除 customer.last_appointment_date 之后的逗号。 Datediff 应该与 jdbc 一起使用
-
"datediff() 不起作用,因为我使用的是 JDBC" 没有意义。 JDBC 不会更改您的 SQL。因此,如果该函数对您的 DBMS 有效,您可以通过 JDBC 使用它。
-
我已经编辑了,因为我正在运行 netbeans,每次我使用 datediff(month, customer.last_appointment_date, DATEADD(month, getDate())) = 12 它返回月份不是有效的列 -它不将其识别为有效的日期部分?返回:原因:java.sql.SQLException: [SQLITE_ERROR] SQL 错误或缺少数据库(没有这样的列:月)
-
这不是
DATEADD的正确语法。根据您的问题,您应该只想要datediff(month, customer.last_appointment_date, getdate())