SQL-将INT转换为日期

时间:2019-07-08 11:57:15

标签: sql sql-server

我正在尝试将INT(YYYYMM)值转换为DATE。

我读过一些文章,其中提到从char转换为日期格式。因此,我很想知道-哪一个。是个好方法吗?

示例:

DECLARE @PERIOD INT ='201806'

SELECT CAST(CONCAT(@Period,'01') AS DATE) SQLCAST1
,CAST(CAST(@Period AS varchar(6))+'01'  AS DATE) SQLCAST2

哪种方法理想?为什么?我们还有其他更好的方法吗?

3 个答案:

答案 0 :(得分:5)

我不喜欢隐式数据类型转换,因此我将第一个表达为:

select convert(date, convert(varchar(6),  @PERIOD ) + '01')

或使用datefromparts()这是用于构造日期的内置函数:

select datefromparts( @PERIOD / 100,  @PERIOD % 100, 1)

答案 1 :(得分:0)

这是另一种方法,首先必须转换为char然后转换为日期时间,

    declare @intValue int
    select @intValue = 201907
   select convert(date, convert(varchar(6),  @intValue ) + '01')

答案 2 :(得分:0)

显然concat是最有效的方法。

https://raresql.com/2013/03/12/sql-server-string-concatenation-faster-method/

Cast似乎也是解析标准日期字符串的最有效方法(请参见dateTime的try_cast时间)

SQL - Convert INT to Date

您的第一种方法最有效。