MSSQL如何从日期中取月份?

介绍

在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()函数。这两种方法都可以取回指定日期的月份,同时也可以用于从日期字段中获取每个记录的月份。

数据库标签