【发布时间】:2014-10-14 18:07:18
【问题描述】:
这是我的 mssql 代码 sn-p
Select
Sum((Case
When (me.status in ('CLOSED','VOID') and
Convert(DATE,me.end_dt)=CONVERT(DATE,GETDATE()))
Then 1 else 0
end)) as completed,
Sum((Case
When datediff
( hh, cast (CONVERT (DATE, GETDATE()) as varchar)+' '+ '00:00:00.000', me.due_dt)
between 12 and 24 and me.status not in ('CLOSED','VOID')
Then 1 else 0
end)) as Count_12_to_24
from pvr_svc me with(nolock)
对于第一块查询,这是我迄今为止尝试过的。
expr = func.sum(case([(and_(pvr_svc.status.in_(['CLOSED','VOID']),
(func.convert(DATE, pvr_svc.end_dt)== func.convert(DATE, func.current_date()))
),1)],else_=0)).label('com')
session.query(expr).scalar()
但我收到一个错误提示。
****** NotImplementedError: 不知道如何对值进行文字引用(类 'sqlalchemy.types.DATE')***
我有几个问题,
第一季度。如何将 datetime 列值(在上述情况下为 me.end_dt)转换为 DATE 类型?
第二季度。 sqlalchemy 中的 GETDATE() 等价物是什么? (我试过 func.current_date(), func.now())
第三季度。实现mssql代码sn-p最后一块的正确方法是什么?
我已经通过sqlalchemy doc, 在stackoverflow上找到了一些信息,下面是链接,
【问题讨论】:
标签: python sql sqlalchemy