SQL - 将长整数转换为datetime

时间:2011-01-15 00:56:15

标签: sql tsql

我有一个数据库,其日期格式如下:

201001.01亿

那里的时间是2010年1月1日00:00:00。

我希望能够将其转换为正常的SQL Datetime语法并返回。这可能吗?我只能做到这一点:

SELECT CAST(CURRENT_TIMESTAMP as int);

返回'40556' - 不完全是我追随的。

2 个答案:

答案 0 :(得分:5)

您可以使用substring将字符串转换为yyyy-MM-dd HH:mm:ss表示法,并将其转换为datetime

select  convert(datetime, 
            substring(sub.Dt,1,4) + '-' + 
            substring(sub.Dt,5,2) + '-' + 
            substring(sub.Dt,7,2) + ' ' +
            substring(sub.Dt,9,2) + ':' + 
            substring(sub.Dt,11,2) + ':' + 
            substring(sub.Dt,13,2))
from    (
        select  '20100101000000' as Dt
        ) sub

答案 1 :(得分:1)

你可以用所需的空格和冒号填充它:

select
stuff(stuff(stuff('20100101000000',9,0,' '),12,0,':'),15,0,':') STR,
convert(datetime,stuff(stuff(stuff('20100101000000',9,0,' '),12,0,':'),15,0,':')) DT;

结果是

STR               | DT
20100101 00:00:00 | 2010-01-01 00:00:00.000

第一个显示转换为的字符串,第二个显示日期时间值。 反过来

select
convert(char(8),getdate(),112) + replace(convert(varchar(30),getdate(),108),':','');

如果从表中选择,则将常量'20100101000000'和“getdate()”替换为必填字段名称。