SQL Server中的日期格式转换实践(sqlserver日期转换)
SQL Server中的日期格式转换实践
日期格式转换是编写一个SQL语句时常见的一项工作,它通常与查询日期、时间和日期时间有关。SQL Server提供了一系列函数,以便将日期格式转换的格式,例如:VARCHAR,NVARCHAR,CHAR,NCHAR,DATETIME,SMALLDATETIME,DATETIME2,DATE等等。
首先,让我们从VARCHAR类型的字符串来开始日期格式转换,可以使用函数CONVERT()或CAST()。
例如,要将VARCHAR(32)类型的日期值转换为DATETIME类型,可以使用以下查询:
SELECT CONVERT(DATETIME, ’05-02-2021′, 101); 或者
SELECT CAST(’05-02-2021′ AS DATETIME)
结果是:2021-05-02 00:00:00.000
类似的,如果要将CHAR类型的日期值转换为DATETIME类型,可以使用下面的查询:
SELECT CONVERT(DATETIME, ‘2021-01-02’, 101); 或者
SELECT CAST(‘2021-01-02’ AS DATETIME)
结果同样是:2021-05-02 00:00:00.000
以上查询仅支持以下格式:
如果没有指定格式:dd-mmm-yyyy, 例如:30-MAY-2021
如果指定格式:yyyy-mm-dd, 例如:2021-05-30
另外,也可以使用参数化函数DATEFROMPARTS()来转换格式,它接受三个参数:年份,月份和日期:
SELECT DATEFROMPARTS(2021, 5, 2)
结果是:2021-05-02 00:00:00.000
SQL Server 2012及更高版本中,还可以使用函数FORMAT()将日期格式转换成其他不同的格式,它接受三个参数:日期值,格式化样式,以及可选参数(如果需要)指定区域性:
例如,要将格式化的日期值转换为另一种格式(比如以下查询,将yyyy-mm-dd转换为dd-mm-yyyy):
SELECT FORMAT(GETDATE(), ‘dd-MM-yyyy’)
结果是:02-05-2021
其次,如果SQL Server上的日期为DATETIME2、SMALLDATETIME或DATE类型,可以使用CONVERT()或CAST()函数来将其转换为不同的格式,其格式可以从上述函数的官方文档中获取:
CONVERT函数:
https://docs.microsoft.com/zh-cn/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-2017
CAST函数:
https://docs.microsoft.com/zh-cn/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-ver15
例如,将DATETIME2类型的值转换为VARCHAR类型:
SELECT CONVERT(VARCHAR(32), GETDATE(), 121)
结果是:2021-05-02 12:16:41.643
以上就是SQL Server中的日期格式转换实践,以便能够在不同的语句中正确使用日期查询。经过上述操作后,就可以得到正确的日期格式,可以对对SQL功能进行更有效地利用等等。