【问题标题】:Datetime SQL command not working日期时间 SQL 命令不起作用
【发布时间】:2016-12-05 22:30:36
【问题描述】:

以下代码不起作用,因为 datetime 以这种形式返回值: datetime.date(2016, 12, 5)。数据库中的信息是作为日期时间输入的,所以我认为 SQL lite 能够处理它。

唯一的区别是事件表中的日期有小时和分钟,因此是 LIKE,因为我试图提取当天的所有事件。

第一天

date1 = (datetime.datetime.now() + datetime.timedelta(days=1)).date()
rows1 = db.execute ("SELECT * FROM events WHERE date LIKE :date ORDER BY date", date = date1)

错误

rows1 = db.execute ("SELECT * FROM events WHERE date LIKE :date ORDER 按日期”,日期 = 日期 1) 文件 “/usr/lib/python3/dist-packages/cs50/sql.py”,第 41 行,在执行中 raise RuntimeError(e) RuntimeError: 不知道如何直接引用 值 datetime.date(2016, 12, 5)

我该如何解决这个问题?

【问题讨论】:

    标签: python sql sqlite datetime


    【解决方案1】:

    解决了..

    date1 = (datetime.datetime.now() + datetime.timedelta(days=1)).date()
    rows1 = db.execute ("SELECT * FROM events WHERE date LIKE :date ORDER BY date", date = str(date1) +'%')
    

    为了喜欢工作,你需要一个 %

    【讨论】:

    • 修复它的是用str(date1)date1 进行字符串化,这样您就可以传入字符串2016-12-06。 Python SQLite 驱动程序告诉你它不知道如何对日期对象进行字符串化,你必须为它做。 % 只是LIKE 的通配符,现在您传入2016-12-06%,它将匹配以2016-12-06 开头的任何日期。
    猜你喜欢
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    • 2016-06-02
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    相关资源
    最近更新 更多