gpt4 book ai didi

sql - 在JDBC中根据日期提取记录

转载 作者:行者123 更新时间:2023-12-03 19:41:02 25 4
gpt4 key购买 nike

我该如何退回最后约会日期是今天的11个月前的所有客户?还是从今天的一个月后的12个月前算起?

第一条语句在从约会中获取约会并将其与当前日期进行比较,并返回明天发生的所有约会的工作中:

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错误或缺少数据库(没有这样的列:month)

最佳答案

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

使用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')

关于sql - 在JDBC中根据日期提取记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29281544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com