2016-12-14 8 views
1

'タイムスタンプタイプの無効な構文'を修正するには?私はこの問題に苦しんでいます

私は、関数実行したときにそれは大丈夫だった

def total_event(start_date, end_date): 
    conn = psycopg2.connect(NE_DB_2) 
    cur = conn.cursor() 
    payload = """SELECT COUNT("pattern_id") FROM "pattern" WHERE "created_at" < '%(end)s' AND "created_at" > '%(start)s'""" 
    payload % {'start': start_date, 'end': end_date} 
    cur.execute(payload) 
    rows = cur.fetchall() 
    event_total = str(event_total)  
    return event_total 

を私は定義された変数と関数を実行する場合:

start_date = '2016-12-05' 
end_date = '2016-12-11' 
start_date = datetime.datetime.strptime(start_date,'%Y-%m-%d') 
end_date = datetime.datetime.strptime(end_date,'%Y-%m-%d') 
event_total = total_event(start_date, end_date) 
event_total 

それはこの私を与えますエラー:

DataErrorTraceback (most recent call last) 
<ipython-input-46-0979ea389f87> in <module>() 
    12 start_date = datetime.datetime.strptime(start_date,'%Y-%m-%d') 
    13 end_date = datetime.datetime.strptime(end_date,'%Y-%m-%d') 
---> 14 event_total = total_event(start_date, end_date) 
    15 event_total 

<ipython-input-46-0979ea389f87> in total_event(start_date, end_date) 
     4  payload = """SELECT COUNT("pattern_id") FROM "pattern" WHERE "created_at" < '%(end)s' AND "created_at" > '%(start)s'""" 
     5  payload % {'start': start_date, 'end': end_date} 
----> 6  cur.execute(payload) 
     7  rows = cur.fetchall() 
     8  event_total = str(event_total) 

DataError: invalid input syntax for type timestamp: "%(end)s" 
LINE 1: ..."pattern_id") FROM "pattern" WHERE "created_at" < '%(end)s' ... 

答えて

1

あなたは再割り当てしていません書式設定された文字列は​​になります。 %(end)sの変数を渡しています。

payload = payload % {'start': start_date, 'end': end_date} 
+0

に変更

payload % {'start': start_date, 'end': end_date} 

は完全に働いた、ありがとう@Mikk! –

+0

@Thànhđạt:それが完璧に働くならば、答えを受け入れるべきです。 –

関連する問題