介绍
在MSSQL中,可以通过多种方式从日期中获取月份。本文将介绍其中两种方法,一种是使用DATEPART()函数,另一种是使用MONTH()函数。
方法一:使用DATEPART()函数
DATEPART()函数可以从日期中提取指定的部分,如年、月、日等。当需要获取月份时,可以将DATEPART()函数中的第二个参数设置为MONTH,如下所示:
SELECT DATEPART(MONTH, '2022-10-01') AS '月份'
输出为:
月份
10
上述代码中,将一个日期字符串作为DATEPART()函数的第一个参数,同时将MONTH作为第二个参数,查询结果会返回该日期的月份。如果需要获取每个记录的月份,可以将日期字段作为DATEPART()函数的第一个参数传递:
SELECT DATEPART(MONTH, '2022-01-01') AS '月份', '2022-01-01' AS '日期'
UNION
SELECT DATEPART(MONTH, '2022-02-01') AS '月份', '2022-02-01' AS '日期'
UNION
SELECT DATEPART(MONTH, '2022-03-01') AS '月份', '2022-03-01' AS '日期'
输出为:
月份 日期
1 2022-01-01
2 2022-02-01
3 2022-03-01
使用DATEPART()函数需要注意的事项
使用DATEPART()函数时需要注意,由于该函数返回的是一个整数,因此在表达式中应使用引号将列别名括起来,以将其解释为字符串。例如:
SELECT DATEPART(MONTH, '2022-10-01') AS '月份'
如果不使用引号将别名括起来,则会引发以下错误:
错误:无法识别的关键字 ALTER
此外,DATEPART()函数的第一个参数可以是任何支持日期时间格式的参数,包括datetime、datetime2、datetimeoffset、smalldatetime和date。
方法二:使用MONTH()函数
MONTH()函数可以从日期表达式中提取月份,其语法如下:
SELECT MONTH('2022-10-01') AS '月份'
该语句将返回2022年10月的月份,查询结果为:
月份
10
如果需要获取每个记录的月份,则可以将日期字段作为MONTH()函数的参数传递:
SELECT MONTH('2022-01-01') AS '月份', '2022-01-01' AS '日期'
UNION
SELECT MONTH('2022-02-01') AS '月份', '2022-02-01' AS '日期'
UNION
SELECT MONTH('2022-03-01') AS '月份', '2022-03-01' AS '日期'
结果同上述使用DATEPART()函数时的结果相同。
使用MONTH()函数需要注意的事项
与DATEPART()函数类似,使用MONTH()函数时需要注意,由于该函数返回的是一个整数,因此在表达式中应使用引号将列别名括起来,以将其解释为字符串。例如:
SELECT MONTH('2022-10-01') AS '月份'
如果不使用引号将别名括起来,则会引发以下错误:
错误:无法识别的关键字 ALTER
MONTH()函数的参数也可以是任何支持日期时间格式的参数,包括datetime、datetime2、datetimeoffset、smalldatetime和date。
总结
本文介绍了两种从日期中提取月份的方法:使用DATEPART()函数和MONTH()函数。这两种方法都可以取回指定日期的月份,同时也可以用于从日期字段中获取每个记录的月份。