【问题标题】:Pulling records based on Date in JDBCJDBC中基于日期拉取记录
【发布时间】: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())

标签: sql sqlite jdbc


【解决方案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')

【讨论】:

  • 我试过这个,但它只适用于我的 last_appointment_date 是 DATETIME 类型但在 2015-02-01 表单中作为字符串输入并且不能返回 sqldate 格式的日期?
  • @fooll:SQLite 没有任何 datetime 数据类型。如果日期以 SQLite 无法理解的格式存储,则需要对其进行转换。见sqlite.org/lang_datefunc.html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-13
  • 1970-01-01
  • 2022-07-02
  • 2019-12-26
  • 1970-01-01
相关资源
最近更新 更多