在本章中,我们将深入探讨 SQL Server 和标准 SQL 中的日期函数。这些函数对于处理时间数据至关重要,无论是在查询中筛选特定日期的数据,还是对日期进行格式化和计算。
SQL Server 日期函数
GETDATE()
GETDATE()
函数返回当前的系统日期和时间。
SELECT GETDATE() AS CurrentDateTime;
DATEADD()
DATEADD()
函数用于向日期添加指定的时间间隔。它接受三个参数:要添加的时间间隔(如日、月或年),要添加的数量,以及基准日期。
-- 向当前日期添加30天 SELECT DATEADD(DAY, 30, GETDATE()) AS DateAfter30Days; -- 在2023-01-01的基础上减去1个月 SELECT DATEADD(MONTH, -1, '2023-01-01') AS DateBeforeOneMonth;
DATEDIFF()
DATEDIFF()
函数计算两个日期之间的差值,并返回该差值的整数值。它接受三个参数:时间间隔类型(如年、月或日),开始日期,结束日期。
-- 计算两个日期之间的天数差 SELECT DATEDIFF(DAY, '2023-01-01', '2023-02-01') AS DaysDifference; -- 计算两个日期之间的月数差 SELECT DATEDIFF(MONTH, '2023-01-01', '2024-01-01') AS MonthsDifference;
DATEPART()
DATEPART()
函数用于从日期中提取部分信息,例如年份、月份或星期几。
-- 提取当前日期的年份 SELECT DATEPART(YEAR, GETDATE()) AS CurrentYear; -- 提取给定日期的月份 SELECT DATEPART(MONTH, '2023-12-25') AS MonthOfDate;
DATEFROMPARTS()
DATEFROMPARTS()
函数允许您根据年、月和日的值创建一个日期。
-- 使用指定的年、月、日创建日期 SELECT DATEFROMPARTS(2023, 12, 25) AS ChristmasDay;
DATENAME()
DATENAME()
函数返回指定日期部分的名称,例如月份或星期几。
-- 返回当前日期的星期几名称 SELECT DATENAME(WEEKDAY, GETDATE()) AS WeekdayName; -- 返回给定日期的月份名称 SELECT DATENAME(MONTH, '2023-12-25') AS MonthName;
标准 SQL 日期函数
虽然不同数据库系统可能有不同的日期函数,但有一些通用的日期函数在标准 SQL 中被广泛支持。
CURRENT_DATE()
CURRENT_DATE
返回当前日期。
SELECT CURRENT_DATE AS Today;
CURRENT_TIME()
CURRENT_TIME
返回当前时间。
SELECT CURRENT_TIME AS Now;
CURRENT_TIMESTAMP
CURRENT_TIMESTAMP
返回当前的日期和时间。
SELECT CURRENT_TIMESTAMP AS Now;
EXTRACT()
EXTRACT()
函数从日期或时间戳中提取特定部分,如年、月或日。
-- 从当前日期中提取年份 SELECT EXTRACT(YEAR FROM CURRENT_DATE) AS CurrentYear; -- 从当前日期时间中提取小时 SELECT EXTRACT(HOUR FROM CURRENT_TIMESTAMP) AS HourNow;
DATE()
DATE()
函数将日期时间转换为仅包含日期的部分。
-- 将日期时间转换为日期 SELECT DATE(CURRENT_TIMESTAMP) AS OnlyDate;
TIMESTAMP()
TIMESTAMP()
函数用于创建一个日期时间值。
-- 创建一个特定的日期时间值 SELECT TIMESTAMP('2023-12-25 12:00:00') AS SpecificDateTime;
INTERVAL
INTERVAL
关键字用于表示时间间隔,常与加法或减法操作符一起使用来修改日期。
-- 当前日期加上一个月 SELECT CURRENT_DATE + INTERVAL '1 MONTH' AS NextMonth; -- 当前日期减去一天 SELECT CURRENT_DATE - INTERVAL '1 DAY' AS Yesterday;
通过学习这些日期函数,您将能够更有效地处理和操作日期时间数据,无论是对数据进行过滤、排序,还是进行复杂的计算。在实际应用中,灵活运用这些函数可以大大提高查询的效率和准确性。