如何退回自上次约会之日起11个月前最后一次约会日期的所有客户?还是12个月前从今天起一个月之后?
第一个声明正在我获得from_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(月,customer.last_appointment_date,DATEADD(月,getDate()))= 12它返回月份而不是有效列 - 它不会将其识别为有效的约会对象?
返回:引起:java.sql.SQLException:[SQLITE_ERROR] SQL错误或缺少数据库(没有这样的列:月)
答案 0 :(得分:1)
计算比较字段的日期,而不是计算差异并与常量进行比较,数据库可以使用索引来查找记录。
使用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')