Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在JDBC中基于日期提取记录_Sql_Sqlite_Jdbc - Fatal编程技术网

Sql 在JDBC中基于日期提取记录

Sql 在JDBC中基于日期提取记录,sql,sqlite,jdbc,Sql,Sqlite,Jdbc,我如何退回从今天起11个月前最后一次预约的所有客户?还是从今天起一个月后的12个月前 第一个语句是“工作”,我从_日期获得约会,并将其与当前日期进行比较,然后返回明天发生的所有约会: SELECT appointment.id, appointment.from_date WHERE (julianday('now') - julianday(appointment.from_date)) = 1 但是对于第二个声明,我不知道如何返回从当前日期算起最后一个约会日期是1

我如何退回从今天起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时,它返回的month不是一个有效的列-它不承认它是一个有效的日期部分


返回:由以下原因引起:java.sql.SQLException:[SQLITE\u ERROR]sql错误或缺少数据库(没有这样的列:month)

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

使用
date
功能代替
dateadd
(请参阅):


我在这两个语句中都看到语法错误。您确定这就是您正在使用的sql吗?您使用的数据库管理系统是什么?请尝试在第二个查询中删除customer.last_appointment_日期后的逗号。Datediff应该与jdbc一起工作“Datediff()不工作,因为我正在使用jdbc”没有意义。JDBC不会改变您的SQL。因此,如果该函数对您的DBMS有效,您可以通过JDBC使用它。我编辑了它,因为我正在通过netbeans运行,每次使用datediff(month,customer.last_appointment_date,DATEADD(month,getDate())=12时,它返回的month不是一个有效列-它无法将其识别为有效的日期部分?返回:原因:java.sql.SQLException:[SQLITE\u ERROR]sql错误或缺少数据库(没有这样的列:month),这不是
DATEADD
的正确语法。听你的问题,你应该只想要
datediff(月,customer.last\u约会\u日期,getdate())
我尝试了这个方法,但是只有当我的上一次约会日期是DATETIME类型,但在2015-02-01表格中以字符串形式输入,并且无法返回sqldate格式的日期时,它才有效?@傻瓜:SQLite没有任何
日期时间
数据类型。如果日期以SQLite无法理解的格式存储,则需要对其进行转换。看见
SELECT  customer.id, 
        customer.last_appointment_date
FROM    customer 
WHERE   customer.last_appointment_date = date('now', '-11 month')