2016-08-12 16 views
0

SQLalchemyでdatetimeカラムに2つのテーブルを結合する必要がありますが、完全なdatetimesではなく日付部分のみを考慮する必要があります日の時間が等しくない場合でも)。あなたはまた、代わりとしてタイムスタンプをキャストすることができ、この場合にはSQLalchemyで日にちだけを考慮して日付を考慮に入れて

select = sq.select([first.c.id, 
        first.c.date, 
        first.c.value, 
        second.c.value])\ 
    .select_from(first.join(second, sq.and_(
     first.c.id == second.c.id, 
     sq.func.date_trunc('day', first.c.date) == 
     sq.func.date_trunc('day', second.c.date) 
    ))) 

:ここ

は、私は、PostgreSQLで機能date_trunc(text, timestamp)を使用し日間の精度にタイムスタンプを切り捨てるには、今

import sqlalchemy as sq 
... 
first = meta.tables["schema.first"] 
second = meta.tables["schema.second"] 
select = sq.select([ 
    first.c.id, 
    first.c.date, 
    first.c.value, 
    second.c.value]) 
    .select_from(first.join(second, sq.and_(
     first.c.id == second.c.id, 
     first.c.date == second.c.date 
     # exact match between datetimes is currently needed 
    ))) 
+0

実行しているDBは何ですか? –

+0

PostgreSQL DBです –

答えて

1

を持っているものです日付:

sq.cast(first.c.date, sq.Date) == sq.cast(second.c.date, sq.Date) 
0
from sqlalchemy.sql.functions import func 
first = meta.tables("schema.first") 
second = meta.tables("schema.second") 
select = sq.select([ 
    first.c.id, 
    first.c.date, 
    first.c.value, 
    second.c.value]) 
    .select_from(first.join(second, sq.and_(
     first.c.id == second.c.id, 
     func.DATE(first.c.date) == func.DATE(second.c.date) 
    ))) 
関連する問題