01 前言
在MSSQL中,我们可以使用多种时间条件对数据进行筛选和查询,从而满足我们的数据需求。本文将总结九个时间条件的具体用法,并且结合实际案例进行详细说明。以下所有案例均在MSSQL Server 2014环境下进行测试。
02 当前时间的条件
当前时间的条件可以使用GETDATE()函数或者CURRENT_TIMESTAMP关键字来表示。
02.1 GETDATE()函数
GETDATE()函数返回当前系统日期和时间,在时间条件中可以根据需要加减时间来进行查询。
--筛选出当前日期的数据
SELECT *
FROM your_table
WHERE DATEADD(dd, 0, DATEDIFF(dd, 0, date_column)) = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()));
--查询当前时间之前5分钟的数据
SELECT *
FROM your_table
WHERE date_column > DATEADD(minute, -5, GETDATE());
02.2 CURRENT_TIMESTAMP
CURRENT_TIMESTAMP是SQL Server的一个系统函数,返回当前日期和时间。
--查询当前时间之前一小时的数据
SELECT *
FROM your_table
WHERE date_column > DATEADD(hour, -1, CURRENT_TIMESTAMP);
03 日期时间范围条件
日期时间范围条件使用BETWEEN AND语句,可以筛选出指定时间范围内的数据。
--查询2018年1月1日至2018年6月30日的订单
SELECT *
FROM your_table
WHERE order_date BETWEEN '2018-01-01' AND '2018-06-30';
04 比较时间条件
比较时间条件使用< > = <= >=符号,可以筛选出指定时间之前、之后或者等于某个时间的数据。
--查询2018年之前的订单
SELECT *
FROM your_table
WHERE order_date < '2018-01-01';
--查询2019年之后的订单
SELECT *
FROM your_table
WHERE order_date > '2019-01-01';
--查询2018年1月1日当天的订单
SELECT *
FROM your_table
WHERE order_date = '2018-01-01';
05 天数条件
天数条件使用DATEADD()函数,可以根据需求加减天数。
--查询今天之前7天的数据
SELECT *
FROM your_table
WHERE order_date >= DATEADD(day,-7,GETDATE());
06 月数条件
月数条件使用DATEADD()函数,可以根据需求加减月数。
--查询上个月的所有订单
SELECT *
FROM your_table
WHERE order_date >= DATEADD(month,-1,DATEADD(day,1,DATEADD(month,DATEDIFF(month,0,GETDATE()),0)))
AND order_date < DATEADD(day,1,DATEADD(month,DATEDIFF(month,0,GETDATE()),0));
07 年数条件
年数条件使用DATEADD()函数,可以根据需求加减年数。
--查询去年的所有订单
SELECT *
FROM your_table
WHERE YEAR(order_date) = YEAR(DATEADD(year,-1,GETDATE()));
08 时间戳条件
时间戳条件使用CONVERT()函数,可以将时间转换为时间戳进行筛选。
--查询2021年1月1日0点至1点的所有订单
SELECT *
FROM your_table
WHERE order_date >= CONVERT(DATETIME, '01/01/2021 00:00', 103)
AND order_date <= CONVERT(DATETIME, '01/01/2021 01:00', 103);
09 NULL条件
NULL条件使用IS NULL或IS NOT NULL语句,可以筛选出空值或非空值的数据。
--查询订单中没有备注的数据
SELECT *
FROM your_table
WHERE order_note IS NULL;
--查询订单中有备注的数据
SELECT *
FROM your_table
WHERE order_note IS NOT NULL;
10 总结
本文总结了MSSQL中九个时间条件的具体用法,并且结合实际案例进行了详细说明。除此之外,在实际的应用中,我们还可以根据需求使用多种时间条件进行个性化的查询。