根据 JDBC 中的日期提取记录

Pulling records based on Date in JDBC

我如何才能 return 上次 appointment_date 是从今天开始的 11 个月前的所有客户?或者从今天起一个月内的日期算起 12 个月前?

第一个语句在我得到约会 from_date 并将其与当前日期和 return 明天发生的所有约会进行比较:

SELECT  appointment.id, 
        appointment.from_date 
WHERE   (julianday('now') - julianday(appointment.from_date)) = 1

但是对于第二个语句,我无法弄清楚如何 return 从当前日期算起最后一次约会日期是 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 it returns month 不是有效的列 - 它不将其识别为有效的日期部分?

returned:原因:java.sql.SQLException:[SQLITE_ERROR] SQL 错误或缺少数据库(没有这样的列:月份)

计算与您的字段进行比较的日期,而不是计算差异并与常数进行比较,这样数据库就可以利用索引来定位记录。

使用date函数代替dateadd(参见SQLite equivalent of SQL Server DateAdd function):

SELECT  customer.id, 
        customer.last_appointment_date
FROM    customer 
WHERE   customer.last_appointment_date = date('now', '-11 month')