Python sqlite сравнивая даты, хранящиеся в тексте в запросе - PullRequest
0 голосов
/ 19 июня 2019

Я использую Python и построил таблицу в sqlite. Я не знал, что в Python есть тип поля метки времени для sqlite, поэтому я сохранил его как текст.

Ниже приведен мой код и результат ... единственные даты, показанные в таблицах, относятся к 2019-06-18, но запрос возвращает 2019-06-19 ... не знаю, почему

import sqlite3
# Connecting to the database file
sqlite_file = 'insta.sqlite'
conn = sqlite3.connect(sqlite_file)
c = conn.cursor()

# Get all rows
c.execute("SELECT * FROM daily_counts")
count_row = c.fetchall()
for row in count_row:
    print(row)

# Get Daily Count
c.execute('SELECT count FROM daily_counts where current_date = ? and client_id = ? and metric = ?',
    ('2019-06-18', 0, 'C'))
count_row = c.fetchall()
print(count_row)

# Get Daily Count
c.execute('SELECT count FROM daily_counts where current_date = ? and client_id = ? and metric = ?',
    ('2019-06-19', 0, 'C'))
count_row = c.fetchall()
print(count_row)

# Get Daily Count
c.execute('SELECT count FROM daily_counts where current_date = ? and client_id = ? and metric = ?',
    ('2019-06-20', 0, 'C'))
count_row = c.fetchall()
print(count_row)

Результаты: (обратите внимание, что, когда условие является 19-м, оно возвращает результаты для 18-го, а 18-е не возвращает результатов ..)

(0, u'2019-06-18', u'A', 2)
(0, u'2019-06-18', u'B', 6)
(1, u'2019-06-18', u'C', 180)
(1, u'2019-06-18', u'D', 258)
(1, u'2019-06-18', u'E', 111)
(0, u'2019-06-18', u'C', 180)
(1, u'2019-06-18', u'F', 3)

[]

[(180,)]

[]

Я предполагаю, что должен использовать тип поля timestamp вместо текста? Но я все равно ожидал бы, что это сработает

1 Ответ

1 голос
/ 20 июня 2019

current_date является зарезервированным словом sqlite .

Добавьте двойные кавычки или обратные кавычки к имени столбца (например, "current_date") в строках sql, и вы получите ожидаемый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...