将SQL BigInt转换为1811011439转换为日期时间格式

时间:2019-01-14 07:06:58

标签: sql sql-server tsql

我的日期时间行看起来像这种格式

1811011439
1811011439
1811011439
1811011439
1811011439
1811011439

它可以这样阅读

Y. 18
M. 11
D. 01 

在您看到的第一行

有什么可以指导我如何将其转换为日期可读的格式。

3 个答案:

答案 0 :(得分:2)

您要将日期时间值的字符串表示形式(存储为bigint)转换为可读格式。在这种情况下,您可以将字符串/ bigint的日期部分CAST设置为DATE值:

SELECT CAST(LEFT(CAST(1811011439 AS VARCHAR), 6) AS DATE)
-- 2018-11-01

我建议使用DATETIME列而不是BIGINT列来存储这样的值。使用以下SELECT,您将获得所有DATETIME值:

SELECT CAST(SUBSTRING(CAST(1811011439 AS VARCHAR), 1, 6) + ' ' + SUBSTRING(CAST(1811011439 AS VARCHAR), 7, 2) + ':' + SUBSTRING(CAST(1811011439 AS VARCHAR), 9, 2) AS DATETIME)
-- 2018-11-01 14:39:00.000

答案 1 :(得分:2)

据我了解,您的日期以VARCHAR格式显示为“ YYMMDDHHmm”,因此,最简单的方法是:

DECLARE @TextDate AS NVARCHAR(20) = '1811011439';
SELECT CAST(SUBSTRING(@TextDate, 1, 6) AS DATE);

或者如果它在一个表的字段中:

SELECT CAST(SUBSTRING(YourField, 1, 6) AS DATE) FROM YourTable;

答案 2 :(得分:2)

我认为您的列不是BIGINT数据类型,而是VARCHAR,并且您想从中拆分日期

SELECT CAST(LEFT('1811011439', 6) AS DATE)

如果它确实是BIGINT列,只需将其转换为VARCHAR,将其拆分,然后将CAST转换为DATE

SELECT CAST(LEFT(CAST(YourColumn AS VARCHAR), 6) AS DATE)
SELECT CAST(LEFT(YourColumn, 6) AS DATE) --It works too

仍然,对此的正确答案是使用正确的数据类型DATETIME