我有一个表,存储用户提交的任务与时间戳。我想编写一个查询,根据它们提交的时间(是今天/每周/每月...)返回特定的行。SQLAlchemy func问题与日期和.isocalendar()
要检查它是否在本周提交,我想使用date.isocalendar()[1]
函数。问题是,我的时间戳是datetime
s,所以我需要将它们转换为date
s。
使用功能: filter(func.date(Task.timestamp) == datetime.date(datetime.utcnow()))
正常工作。
但我需要的date
对象的isocalendar()
方法,所以我尽量
filter(func.date(Task.timestamp).isocalendar()[1]==datetime.date(datetime.utcnow()).isocalendar()[1])
和它没有好,我得到AttributeError: Neither 'Function' object nor 'Comparator' object has an attribute 'isocalendar'
如果我做一个简单的查询,并尝试datetime.date(task.timestamp).isocalendar()[1]
它工作正常。
如何让它在查询过滤器中工作?
'func.extract( '周',func.date(Task.timestamp))== ... '工作,但它返回一个比iso格式少的数据(根据isocalendar(),今天是第19周,而根据这是第18天)。我找不到任何文档,这是否只是一个区别,因为一个从0开始计数,另一个从1开始计数,还是其他的?如果它的前者,我想从ISO格式减去1将解决问题? – lacer