2011-05-10 149 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的數量限制了精確。我只需要日期。