2016-12-05 10 views
1

datetimeがこの形式の値を返すため、以下のコードは機能しません。 datetime.date(2016,12,5)。データベースの情報はdatetimeとして入力されたので、SQL Liteはそれに対処できると考えました。日時SQLコマンドが機能しません

唯一の違いは、テーブルイベントの日付には時間と分があるため、その日のすべてのイベントを抽出しようとしているためです。

1日

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

ERROR

rows1 = db.execute ("SELECT * FROM events WHERE date LIKE :date ORDER BY date", date = date1) File "/usr/lib/python3/dist-packages/cs50/sql.py", line 41, in execute raise RuntimeError(e) RuntimeError: Don't know how to literal-quote value datetime.date(2016, 12, 5)

どのように私はこの問題を解決することができますか?

答えて

0

のようなあなたがに渡しているので、それは `` `STR(DATE1)とdate1`を文字列化され、固定何

+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) +'%') 

それを解決文字列 '2016-12-06' Python SQLiteドライバは、日付オブジェクトを文字列化する方法を知らなかったことを伝えていました。あなたはそれを実行しなければなりませんでした。 '%'は 'LIKE'のワイルドカードに過ぎません。' 2016-12-06% 'で渡すと、 '2016-12-06'で始まる日付に一致します。 – Schwern

関連する問題