如何用Presto SQL筛选时间戳小时在指定区间内的所有行?
获取日期列小时处于21:00-22:00之间的SQL语句
根据不同数据库的语法特性,这里提供几种常用的实现方式:
MySQL/MariaDB
两种常见写法,优先推荐第二种(可利用索引提升查询效率):-- 方式1:提取小时值判断 SELECT * FROM your_table_name WHERE HOUR(date) = 21; -- 方式2:直接匹配时间范围 SELECT * FROM your_table_name WHERE date >= DATE_FORMAT(date, '%Y-%m-%d 21:00:00') AND date < DATE_FORMAT(date, '%Y-%m-%d 22:00:00');PostgreSQL
同样支持提取小时或直接比较时间部分:-- 方式1:提取小时值判断 SELECT * FROM your_table_name WHERE EXTRACT(HOUR FROM date) = 21; -- 方式2:转换为时间类型匹配范围 SELECT * FROM your_table_name WHERE date::time >= '21:00:00' AND date::time < '22:00:00';SQL Server
借助日期函数或类型转换实现:-- 方式1:提取小时值判断 SELECT * FROM your_table_name WHERE DATEPART(HOUR, date) = 21; -- 方式2:转换为时间类型匹配范围 SELECT * FROM your_table_name WHERE CONVERT(time, date) >= '21:00:00' AND CONVERT(time, date) < '22:00:00';
注意:请将上述代码中的your_table_name替换为你的实际表名。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

