Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x SQLAlchemy按日期和时间与时区组合筛选_Python 3.x_Datetime_Filter_Sqlalchemy_Timezone - Fatal编程技术网

Python 3.x SQLAlchemy按日期和时间与时区组合筛选

Python 3.x SQLAlchemy按日期和时间与时区组合筛选,python-3.x,datetime,filter,sqlalchemy,timezone,Python 3.x,Datetime,Filter,Sqlalchemy,Timezone,更新 @datetime_as_timestamp.expression def datetime_as_timestamp(cls): return db.func.timestamp(cls.date, cls.time) @datetime_as_timestamp.expression def datetime_as_timestamp(cls): return db.func.timestamp(cls.date, cls.time) 到 原创 我的模型中有日期和时

更新

@datetime_as_timestamp.expression
def datetime_as_timestamp(cls):
    return db.func.timestamp(cls.date, cls.time)
@datetime_as_timestamp.expression
def datetime_as_timestamp(cls):
    return db.func.timestamp(cls.date, cls.time)

原创

我的模型中有日期和时间。在另一个表中有它们的时区,但为了简单起见,这里我将手动执行。我想按日期+时间+时区过滤

class Foo(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    date = db.Column(db.Date)
    time = db.Column(db.Time)

    @hybrid_property
    def datetime_as_timestamp(self):
        return time.mktime(
            datetime.datetime.combine(self.date, self.time).timetuple()
        )

    @datetime_as_timestamp.expression
    def datetime_as_timestamp(cls):
        return db.func.timestamp(cls.date, cls.time)
但当我执行过滤查询时

In [1]: Foo.query.filter(func.timezone('Australia/Brisbane', Foo.datetime_as_timestamp) <= func.timezone('UTC', func.current_timestamp())).one()
[1]中的
:Foo.query.filter(func.timezone('Australia/Brisbane',Foo.datetime\u as\u timestamp)我发现这非常有用。我改变了

一切正常

psycopg2.ProgrammingError) syntax error at or near "foo"
LINE 3: WHERE timezone('Australia/Brisbane', timestamp(foo.da...
                                                  ^
 [SQL: 'SELECT foo.id AS checkin_flight_id, foo.date AS checkin_flight_date, foo.time AS checkin_flight_time \nFROM foo \nWHERE timezone(%(timezone_1)s, timestamp(foo.date, foo.time)) <= timezone(%(timezone_2)s, CURRENT_TIMESTAMP)'] [parameters: {'timezone_2': 'UTC', 'timezone_1': 'Australia/Brisbane'}]
@datetime_as_timestamp.expression
def datetime_as_timestamp(cls):
    return db.func.timestamp(cls.date, cls.time)
@datetime_as_timestamp.expression
def datetime_as_timestamp(cls):
    return cls.date + cls.time