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

相关推荐
布局呆星4 小时前
云服务器上部署单项目/多项目
运维·服务器
盐焗鹌鹑蛋4 小时前
【Linux】缓冲区
linux·运维·服务器
祈禾4 小时前
Redis三大缓存问题与分布式锁
运维·数据库·redis·笔记·分布式·缓存
DBA小马哥5 小时前
关系型数据库核心概念手册:SQL、事务与存储引擎的技术脉络
数据库·sql
丫头,冲鸭!!!5 小时前
记账网站3-连数据库
数据库·个人开发
灯澜忆梦6 小时前
【MySQL12】进阶篇 | SQL优化
数据库·sql·mysql·性能优化
IvorySQL6 小时前
PostgreSQL 日报|PG18.5 回归测试崩溃问题(8 月 12 日)
大数据·数据库·人工智能·postgresql
ltl6 小时前
学习型查询优化器:Neo、Bao、Balsa 与 LLM-CBO
数据库
ltl6 小时前
持久内存退场之后:ZNS SSD 与下一代非易失内存
数据库
学代码的CJY7 小时前
Linux 库制作与原理:静态库、动态库、ELF 与动态链接完全指南
linux·运维·服务器