2015-06-30 28 views
1

我必須在H2中創建一個表,主鍵爲yyyyMMddHHmmssSSS格式。因此,對於每個插入,它會自動以所述格式獲取當前日期時間。在H2數據庫中自動生成主鍵作爲當前日期時間

CREATE TABLE TEST_TABLE(ID BIGINT DEFAULT CURRENT_TIMESTAMP() PRIMARY KEY, NAME VARCHAR(255)); 

問題是CURRENT_TIMESTAMP()格式yyyy-MM-dd HH:mm:ss.SSS我。怎麼能在需要的格式得到它。

+0

我改變了一個標籤,纔能有正確的語法在你的問題,我的回答既彰顯到SQL。希望答案有助於解決您的問題。 –

回答

2

您可以在H2控制檯試試這個:

call formatdatetime(now(),'yyyyMMddHHmmssSSS'); 

這會給你一個正確格式化字符串。現在您需要將其轉換爲bigint。

call cast(formatdatetime(now(),'yyyyMMddHHmmssSSS') as bigint); 

最後一步:更改相應的SQL ...

CREATE TABLE TEST_TABLE(
    ID BIGINT DEFAULT CAST(FORMATDATETIME(CURRENT_TIMESTAMP(), 'yyyyMMddHHmmssSSS') AS BIGINT) PRIMARY KEY, 
    NAME VARCHAR(255) 
); 

測試在H2 1.3和1.4。

字謹慎:請用交易和空間的插入...

+0

這對我有用,對不起,我很晚纔回復。我直接執行了3td sql,爲什麼我需要第一個2 sqls?只是爲了驗證是嗎? – 2FaceMan

+0

@livinggourmand是的前兩個只是通過實驗教育。很高興知道完整的第三SQL幫助你 –

相關問題