前言
查询今天的数据,或者查询某一天的数据
SQL DATE() function
使我们能够从特定的历史或当前时间戳值访问日期值。
DATE() 函数
Date()函数返回从传递的datetime表达式中提取的日期。
DATE(datetime expression)
SQL 语句按create_time 获取某一天的数据
select * from mytable where DATE(create_time) == '2022-11-14'
获取今天的数据
方法一:
最原始的方法是给个开始时间和结束时间,用between
start = datetime.strptime("2022-11-14 00:00:00", "%Y-%m-%d %H:%M:%S")
end = datetime.strptime("2022-11-14 23:59:59", "%Y-%m-%d %H:%M:%S")
res = Students.query.\
filter(Students.create_time.between(start, end))\
.all()
print(res)
方法二:使用SQL CAST函数
使用cast函数可以获取datetime字段的date部分
先看CAST函数介绍:CAST (expression AS data_type)
参数说明:
expression:任何有效的SQServer表达式。
AS:用于分隔两个参数,在AS之前的是要处理的数据,在AS之后是要转换的数据类型。
data_type:目标系统所提供的数据类型,包括bigint和sql_variant,不能使用用户定义的数据类型。
用CAST函数进行数据类型转换时,在下列情况下能够被接受:
(1)两个表达式的数据类型完全相同。
(2)两个表达式可隐性转换。
(3)必须显式转换数据类型。
使用示例
# 这里等价于把datetime.datetime.now()的日期部分截取出来做比较,必须都转换成db.DATE类型
res = Students.query.filter(
db.cast(Students.create_time, db.DATE) == db.cast(datetime.now(), db.DATE)
).all()
print(res)
参考博客https://blog.csdn.net/qq_37289115/article/details/110916838