【问题标题】:how to search for a date in sqlite database using python?如何使用python在sqlite数据库中搜索日期?
【发布时间】:2017-01-19 14:49:45
【问题描述】:

我有一个数据库(称为“all_bookings”),它有一个名为“date”的列,在一个名为“bookings”的表中,它以“dd/mm/yyyy”形式存储日期,例如“16/10/ 2017 年。我想在 python 中编写一个函数,它将搜索特定月份的所有日期并输出它们。例如,如果在“12/12/2017”、“23/11/2018”和“19/12/2018”存储的日期中,我想输出 12 月的所有日期,我该怎么做这个?我知道如何搜索特定日期,而不是特定月份。任何帮助将不胜感激。谢谢

【问题讨论】:

  • 您自己尝试过(进行查询)吗?
  • 不,你是怎么做到的?

标签: python database sqlite date search


【解决方案1】:

SUBSTR 函数会做你想做的事。修改为执行 OP 评论中要求的操作。

import sqlite3
conn = sqlite3.connect(':memory:')

events = [ 
    ('12/12/2017', 'ev_1'),
    ('23/11/2018', 'ev_2'),
    ('19/12/2018', 'ev_3'),
    ]

conn.execute('CREATE TABLE bookings (date, event)')
conn.executemany('INSERT INTO bookings (date, event) values (?,?)', events)

validMonth = False
while not validMonth:
    lookForMonth = input('What month, please? (number from 1 through 12):')
    try:
        validMonth = 1<=int(lookForMonth)<=12
    except:
        pass

sqlCmd = 'SELECT date FROM bookings WHERE SUBSTR(date,4,2)="%.2i"' % int(lookForMonth)
for row in conn.execute(sqlCmd):
    print (row)

结果是:

('12/12/2017',)
('19/12/2018',)

【讨论】:

  • 谢谢,这行得通,我将如何调整它而不是使用搜索为“12”的月份,我想搜索用户输入的月份,比如变量?
猜你喜欢
  • 2013-02-01
  • 2013-10-02
  • 1970-01-01
  • 2012-11-03
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 2022-01-23
  • 2011-12-31
相关资源
最近更新 更多