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功能进行更有效地利用等等。


数据运维技术 » SQL Server中的日期格式转换实践(sqlserver日期转换)