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