使用SQLAlchemy查询特定星期几的日期的数据库方法?

5 投票
3 回答
4120 浏览
提问于 2025-04-16 02:03

我有一个表格(叫做'entry'),里面有一个日期时间的列(叫做'access_date')。我想用SQLAlchemy来查询,只找出那些'access_date'是星期一(或者是其他指定的星期几,星期几用数字[0..6]表示)的记录。

这样做可以吗?我现在用的是sqlite和SQLalchemy 0.5.8,如果这有什么影响的话。

相关问题:

3 个回答

0

我对SQLAlchemy不是很专业,所以希望其他人能给出意见。我从这个网址http://www.sqlalchemy.org/docs/ormtutorial.html#common-filter-operators改编了一个例子。在你等待其他人回答的时候,可以试着测试和实验一下这个例子。

query.filter(entry.access_date.in_([0,1,2,3,4,5,6]))
3

在Daniel Kluev的回答基础上,我找到了一种表达相同意思的方式(可能看起来更好看一些?)

query.filter(func.strftime('%w', Entry.access_date) == str(weekday)).all()

这里的weekday是一个数字,范围是从0到6

2

SQLAlchemy并没有一个通用的DAYOFWEEK()函数,所以在条件语句中你需要使用特定数据库的SQL语法。

如果你使用的是MySQL,可以用自定义的函数'weekday'或'dayofweek'。但如果你用的是SQLite,它既没有日期时间类型,也没有weekday()或dayofweek()函数,所以你需要写一些原始的SQL语句。

这里有一些关于这个查询的例子。

在SQLAlchemy中,这段代码看起来会是这样的:

query.filter("strftime('%w', access_date) = :dow").params(dow=0).all()

撰写回答