2011-05-10 93 views
1

是否有一个函数将datetime转换为sql中的bigint? 例如我有一个日期“2010-11-02 00:00:00”,我想获得结果作为编号“20101102000000”将datetime转换为bigint

或者我需要写一些自定义函数,将删除 - ,空间,从:约会时间?

+0

这没有什么意义。你的意思是你想要它作为一个字符串。格式化为:“yyyyMMddHHmmss”? - 出于兴趣,你为什么需要它作为一个大整数? – 2011-05-10 12:22:22

+0

@Lee Gunn - 不一定,你可以决定将你的日期存储为“整数”,并假定数字的“格式”,即解释它的方式,就像yyyyMMddHHmmss。这是最后的数字是秒,接下来的两个是分钟等 – 2011-05-10 12:34:18

+0

但日期已经是一个很大的整数......它是自纪元以来的蜱(或其他)的数量。 – 2011-05-10 12:36:07

回答

3

你可以试试这里这个代码..

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

但这是重复的问题,我的答案是这里太:Sql datatype conversion

+1

您需要120作为4位数年份的转换编号。你也想把整个数字作为int – 2011-05-10 12:27:43

1

在T-SQL无法转换'2010-11-02 00:00:00'20101102000000直接这么肯定的,你说,你需要修改字符串为你可以铸造的东西bigint

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

但@Pramodtech以'DATETIME'开头,而不是字符串。你在这里有什么可以在字符串转换后工作。 – eksortso 2011-05-10 12:51:29

+0

啊好点我的眼睛只是跳到引号,我假设一个字符串 – 2011-05-10 13:00:39

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 
0

我一直在使用最近的溶液(在SQL 2008 R2)是:

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

字符在nvarchar的数量限制了精确。我只需要日期。