Pyt*_*olf 19 postgresql datetime sqlalchemy
我正在尝试在Sqlalchemy中执行以下查询.
Select * from "Mytable" where Date(date_time_field) = "2011-08-16";
Run Code Online (Sandbox Code Playgroud)
我尝试了几种方法.有些人在这里.但似乎没有一个看起来"现实",因为有些人会施放其他字符串格式?!?!并且不是简单的Date()(按日期我的意思是Postgresql日期而不是Python One)在ORM字段.
是否可以在ORM级别在查询字段周围声明一个简单日期()?
最好的问候安东尼奥
Pyt*_*olf 50
使用@Ants Aasma评论.
并保持其清洁任何网络搜索.
from sqlalchemy import Date, cast
from datetime import date
my_data = session.query(MyObject).\
filter(cast(MyObject.date_time,Date) == date.today()).all()
Run Code Online (Sandbox Code Playgroud)
谢谢所有试图解决这个问题的人:)
Zuz*_*leb 12
可以使用using func模块调用本机SQL函数
from sqlalchemy import func
from datetime import date
my_data = session.query(MyObject).filter(
func.date(MyObject.date_time) == date.today()
).all()
Run Code Online (Sandbox Code Playgroud)
调用 func.date
from sqlalchemy import select, func
print select([func.date('2004-10-19 10:23:54')])
Run Code Online (Sandbox Code Playgroud)
将产生以下SQL:
SELECT date(:date_2) AS date_1
Run Code Online (Sandbox Code Playgroud)
您还可以声明自己的SQL函数快捷方式:
from sqlalchemy.sql.functions import GenericFunction
from sqlalchemy.types import DateTime
class convert_tz(GenericFunction):
"""
Sqlalchemy shortcut to SQL convert timezone function
:param DateTime datetime
:param str from_tz: The timezone the datetime will be converted from
:param str to_tz: The timezone the datetime will be converted from
:returns: Datetime in another timezone
:rtype: DateTime or None if timezones are invalid
"""
type = DateTime
Run Code Online (Sandbox Code Playgroud)
使用如下:
from sqlalchemy import select, func
print select([func.convert_tz(func.now(), '+00:00', '-05:00')])
Run Code Online (Sandbox Code Playgroud)
它将生成以下SQL:
SELECT convert_tz(now(), :param_1, :param_2) AS convert_tz_1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15138 次 |
| 最近记录: |