2012-11-20 56 views
6

我需要將時間戳記值(格式:2012-11-19 14:29:50.0)轉換爲BIGINT值(格式:2012111315041650 = YYYYMMDDhhmmss)。我需要將當前時間插入僅接受BIGINT的表格列中。如何在SQL中將時間戳記(日期格式)轉換爲BIGINT

我正在使用松鼠SQL客戶端版本3.3.0。我使用的是現在查詢是

INSERT INTO table1 (BINGINT_DATE, TIMESTAMP_DATE) 
VALUES (2012111315041650, CURRENT_TIMESTAMP); 

除了手動輸入BIGINT_DATE價值的,我想給CURRENT_TIMESTAMPNOW()轉換爲BIGINT值作爲格式YYYYMMDDHHMISS

喜歡的東西

INSERT INTO table1 (BINGINT_DATE, TIMESTAMP_DATE) 
VALUES ("CONVERT(CURRENT_TIMESTAMP,BIGINT)", CURRENT_TIMESTAMP); 

讓我知道這樣做是否可行

請幫助我。

感謝

+3

*** *** SQL只是*結構化查詢語言* - 許多數據庫系統中使用的語言,但沒有AA數據庫產品..很多東西都是特定於供應商的 - 所以我們真的需要知道你使用的數據庫系統**(和哪個版本)...... –

+0

你如何得到20121113150416解釋:) – Justin

+0

'20121113150416'不是格式。你的意思是'YYYYMMDDhhmmss'?我問,因爲這與你的第一個例子「2012-11-19 14:29:50.0」不符......另外,你爲什麼要以這種格式?爲什麼不是'Epoch以來的秒「或類似的東西?然後至少*號*實際上*意味着什麼。而是嘗試使用BIGINT作爲假裝字符串... – MatBailie

回答

0

對於Oracle:使用to_charto_number功能如下

TO_NUMBER(TO_CHAR('2012-11-19 14:29:50.0', 'YYYYMMDDHHMISS')) 

對於MySQL:使用DATE_FORMAT & CONVERT如下:

CONVERT(DATE_FORMAT('2012-11-19 14:29:50.0'', '%Y%M%d%H%i%s'), UNSIGNED BIGINT) 
+1

你已經採用了RDBMS。這是***不是普遍的答案。您是否會關心指定哪個RDBMS是這樣並且不適用於? – MatBailie

+0

我是數據庫的新手。我正在使用松鼠SQL客戶端版本3.3.0。 我使用的是現在查詢是 INSERT INTO表1(BINGINT_DATE,TIMESTAMP_DATE) VALUES(2012111315041650,CURRENT_TIMESTAMP): 不用手動輸入BIGINT_DATE價值,我想了CURRENT_TIMESTAMP或NOW()以BIGINT值作爲ER轉換格式爲YYYYMMDDHHMISS – developer1

+0

@Dems:更新了答案。 –

0

下面會給你什麼(我認爲)你在:

DECLARE @TM VARCHAR(50) = '2012-11-19 14:29:50.0' 


SELECT (CAST(SUBSTRING(@TM,1,4) AS INT) * 10000000000) 
    + (CAST(SUBSTRING(@TM,6,2) AS INT) * 100000000) 
    + (CAST(SUBSTRING(@TM,9,2) AS INT) * 1000000) 
    + (CAST(SUBSTRING(@TM,12,2) AS INT)* 10000) 
    + (CAST(SUBSTRING(@TM,15,2) AS INT)* 100) 
    + (CAST(SUBSTRING(@TM,18,2) AS INT)) 

然而,有人可能會提出更好的解決方案來解決其他人提到的整體問題,如果您提供一些更多細節,我們可能會提出一個不太髒的選擇。

-1

Sql Server;更換GETDATE()與您Column name

SELECT CONVERT(bigint, 
     CONVERT(VARCHAR(12) , GETDATE() ,112) + 
     REPLACE(CONVERT(VARCHAR(8) , GETDATE() ,108),':','')) 
0

您可以嘗試在MS SQL類似的東西:

從BIGINT以日期時間:

select dateadd(s, convert(bigint, '<bigint value like 1477958400000>')/1000, convert(datetime, '1-1-1970 00:00:00')) 

從日期時間爲bigint:

select cast(datediff(s, convert(datetime, '1-1-1970 00:00:00'), convert(datetime, '<datetime value like 11-01-2016>')) as bigint)* 1000 

乾杯

1

Postgres的你可以使用:

INSERT INTO table1 (BINGINT_DATE, TIMESTAMP_DATE) 
VALUES (to_char(current_timestamp, 'yyyymmddhh24miss')::bigint, CURRENT_TIMESTAMP); 
相關問題