将Int数据类型转换为日期

时间:2019-10-21 16:52:49

标签: sql-server tsql datetime

我正在使用的SQL Server数据库有一个存储为整数的字段,但是它是一个日期。当前它显示20191012。我尝试了以下内容,似乎可以将其转换,但我想以10/12/2019格式显示。谢谢。

CONVERT(DATE,CONVERT(VARCHAR(20),EFFDAT)) AS DATE_EFF

2 个答案:

答案 0 :(得分:1)

您首先需要将 number 20191012转换为日期:

SELECT DATEFROMPARTS(
           20191012 / 10000,
           20191012 % 10000 / 100,
           20191012 % 100
       )
-- 2019-10-12 (DATE)

然后FORMAT

SELECT FORMAT(DATEFROMPARTS(
           20191012 / 10000,
           20191012 % 10000 / 100,
           20191012 % 100
       ), 'MM/dd/yyyy')
-- 10/12/2019 (NVARCHAR)

更简单的方法是将数字转换为字符串并执行几个SUBSTRING()

答案 1 :(得分:0)

DECLARE @myint int = 20191012

SELECT CAST(CAST(@myint as char(8)) as date) AS [theDate]
SELECT CONVERT(char(10), (CAST(CAST(@myint as char(10)) as date)), 101) AS [theDateStyleString]

是一种方式,其中第一个查询将数据简单地转换为日期数据类型,第二个查询另外转换为MM / DD / YYYY格式的字符串。但是请理解,转换为字符串与保留日期数据类型并不相同,因为日期函数和比较(>,<等)在字符串上无法正常工作。

这将产生输出:

theDate
----------
2019-10-12


theDateStyleString
------------
10/12/2019