在 SQL Server 中利用日期格式化查询不同时间范围的数据

在 SQL Server 数据库中,经常需要按照不同的时间范围检索数据。通过巧妙使用 SQL 语句,我们可以轻松地查询今天、昨天、近7天、近30天、一个月内、上一月、本年和去年的数据。以下是使用日期格式化的示例查询:

查询今天的数据

sql 复制代码
SELECT * FROM your_table
WHERE FORMAT(YourDateColumn, 'yyyy-MM-dd') = FORMAT(GETDATE(), 'yyyy-MM-dd');

查询昨天的数据

sql 复制代码
SELECT * FROM your_table
WHERE FORMAT(YourDateColumn, 'yyyy-MM-dd') = FORMAT(DATEADD(DAY, -1, GETDATE()), 'yyyy-MM-dd');

查询近7天的数据

sql 复制代码
SELECT * FROM your_table
WHERE YourDateColumn >= DATEADD(DAY, -6, GETDATE())
  AND YourDateColumn < DATEADD(DAY, 1, GETDATE());

查询近30天的数据

sql 复制代码
SELECT * FROM your_table
WHERE YourDateColumn >= DATEADD(DAY, -29, GETDATE())
  AND YourDateColumn < DATEADD(DAY, 1, GETDATE());

查询一个月内的数据

sql 复制代码
SELECT * FROM your_table
WHERE FORMAT(YourDateColumn, 'yyyy-MM') = FORMAT(DATEADD(MONTH, -1, GETDATE()), 'yyyy-MM');

查询上一月的数据

sql 复制代码
SELECT * FROM your_table
WHERE FORMAT(YourDateColumn, 'yyyy-MM') = FORMAT(DATEADD(MONTH, -1, GETDATE()), 'yyyy-MM');

查询本年的数据

sql 复制代码
SELECT * FROM your_table
WHERE FORMAT(YourDateColumn, 'yyyy') = FORMAT(GETDATE(), 'yyyy');

查询去年的数据

sql 复制代码
SELECT * FROM your_table
WHERE FORMAT(YourDateColumn, 'yyyy') = FORMAT(DATEADD(YEAR, -1, GETDATE()), 'yyyy');

在上述查询中,我们利用了 SQL Server 的 FORMAT 函数,将日期列格式化为特定的日期字符串,以便与当前日期或其他格式化后的日期进行比较。需要注意的是,使用日期格式化来查询可能会对性能产生一定的影响,因此在大型数据集上使用时需要谨慎。通过这些查询示例,你可以根据具体需求轻松获取所需时间范围内的数据。

相关推荐
二当家的素材网2 分钟前
Centos和麒麟系统如何每天晚上2点10分定时备份达梦数据库
linux·数据库·centos
白仑色9 分钟前
Oracle 存储过程、函数与触发器
数据库·oracle·数据库开发·存储过程·plsql编程
头发那是一根不剩了1 小时前
Spring Boot 多数据源切换:AbstractRoutingDataSource
数据库·spring boot·后端
网硕互联的小客服2 小时前
服务器经常出现蓝屏是什么原因导致的?如何排查和修复?
运维·服务器·stm32·单片机·网络安全
witton2 小时前
Go语言网络游戏服务器模块化编程
服务器·开发语言·游戏·golang·origin·模块化·耦合
成都极云科技2 小时前
成都算力租赁新趋势:H20 八卡服务器如何重塑 AI 产业格局?
大数据·服务器·人工智能·云计算·gpu算力
喜欢吃豆2 小时前
从零构建MCP服务器:FastMCP实战指南
运维·服务器·人工智能·python·大模型·mcp
刘阿宾2 小时前
【华为昇腾|CUDA】服务器A6000显卡部署LLM实战记录
服务器·华为·语言模型·gpu算力·kylin
海外空间恒创科技2 小时前
恒创科技:香港站群服务器做seo站群优化效果如何
运维·服务器·科技
搬码临时工2 小时前
内网服务器怎么设置公网远程访问? windows桌面连接和Linux自带SSH外网异地跨网用完整步骤教程
运维·服务器·ssh