我正在尝试使用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()
希望有人可以帮助我解决这个难题!
任何帮助:)
答案 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')