如何正确查询/格式化日期

时间:2019-04-17 18:58:34

标签: python sqlite

我正在尝试使用python为我的SQlite数据库构建函数。该功能的目的是将calibration_date字段下的任何日期拉离当前日期1到5天。

我尝试弄乱表格本身的格式,认为这是一个格式问题。该功能仍然没有执行任何操作。

def datecheck():
    conn = sqlite3.connect("Calibration_Monitor.db")
    cur = conn.cursor()
    cur.execute("SELECT Serial, Calibration_Date from Masterlog where date(Calibration_Date) < (SELECT DATETIME('now', '+5 days'))")
    print(cur.fetchall())
    conn.commit()
    conn.close()

希望有人可以帮助我解决这个难题!

任何帮助:)

2 个答案:

答案 0 :(得分:0)

如果该列的格式设置为日期列,则应引用不带date()的日期,否则请使用date(Calibration_Date)

要获得第二部分,您也不需要在其中多余的SELECT。有关修补程序,请参见下文,有关更多信息,请参见this answer

def datecheck():
    conn = sqlite3.connect("Calibration_Monitor.db")
    cur = conn.cursor()
    cur.execute("SELECT Serial, Calibration_Date FROM Masterlog WHERE Calibration_Date < date('now', '+5 days')")
    print(cur.fetchall())
    conn.commit()
    conn.close()

现在,如果您要说的是距离BETWEEN 1和5天的日期,而不是距离5天之内的任何日期,那么您可能想使用类似的方法:

cur.execute("SELECT Serial, Calibration_Date FROM Masterlog WHERE Calibration_Date BETWEEN date('now') AND date('now', '+5 days')")

编辑: 如果您打算使用过去的日期而不是将来的日期,则应将其更改为+5 days

答案 1 :(得分:0)

如果您的Calibration_Date日期是过去的日期,请使用-5而不是+5。 (基于我上面的评论)。这将为您提供过去5天以上的所有记录。

.......where date(Calibration_Date) < date('now','-5 day')

类似的东西:

SELECT Serial, Calibration_Date from Masterlog where date(Calibration_Date) < date('now','-5 day')

如果要最近五天的数据

SELECT Serial, Calibration_Date FROM Masterlog WHERE Calibration_Date BETWEEN date('now') AND date('now', '-5 days')