将datetime转换为bigint

时间:2011-05-10 12:20:51

标签: sql-server

是否有一个函数将datetime转换为sql中的bigint? 例如。我有一个日期“2010-11-02 00:00:00”,我想得到的数字为“20101102000000”

或者我是否需要编写一些自定义函数来删除 - ,space,:from datetime?

4 个答案:

答案 0 :(得分:3)

你可以在这里试试这段代码..

update Table_1 set xnew=REPLACE(REPLACE(REPLACE (CONVERT(VARCHAR,x,20) , '-' , '' ),':',''),' ','')

但这是重复的问题我也在这里回答:Sql datatype conversion

答案 1 :(得分:1)

您无法直接在T-SQL中将'2010-11-02 00:00:00'转换为20101102000000所以是的,正如您所说,您需要将字符串修改为可以投射为bigint的内容。< / p>

declare @str varchar(19) = '2010-11-02 00:00:00'
select cast(replace(replace(replace(@str, '-', ''), ' ', ''), ':', '') as bigint)

答案 2 :(得分:0)

这是一个解决方案:

declare @t datetime = '2010-11-02 00:00:00'

select  DATEPART(second, @t) +
        DATEPART(minute, @t) * 100 +
        DATEPART(hour, @t) * 10000 +
        DATEPART(day, @t) * 1000000 +
        DATEPART(month, @t) * 100000000 +
        DATEPART(year, @t) * 10000000000

答案 3 :(得分:0)

我最近使用的解决方案(在SQL 2008 R2中)是:

cast(CONVERT(nvarchar(8),CURRENT_TIMESTAMP,112) as bigint)

nvarchar中的字符数限制了精度。我只需要约会。