2013-04-25 127 views
1

我有一個SQL日期格式的日期格式的數據表格作爲yyyy-mm-dd。我用bigint創建了一個新列,並且希望編寫一個查詢將日期轉換爲bigint並更新我的新列。我嘗試使用CAST並收到一條消息,我無法明確地將日期轉換爲bigint。有人可以幫我用SQL公式將日期(yyyy-mm-dd)轉換爲bigintSQL數據更新查詢

+0

什麼是您期待的數字目標格式?像「yyyymmdd」或其他不同的東西?也許是一個unix時間戳? – Bjoern 2013-04-25 06:10:39

+0

請更新您的問題。 – Luv 2013-04-25 06:16:54

回答

1

我不確定您正在使用哪種品牌的SQL Server,但在Microsoft SQL Server上可以使用convert函數做到這一點。

(編輯)根據評論中的信息添加了一個示例。我還假設你使用SQL服務器:

如果您的表有一個名爲「IssueDate」日期時間列,並呼籲IssueDateOAD新BIGINT列,則可以運行此查詢:

update mytable set IssueDateOAD = convert(bigint, IssueDate) + 2

如果IssueDate是一個包含日期格式化字符串的varchar列,您必須先將其轉換爲日期。對於yyyy-mm-dd,您可以使用convert(datetime, IssueDate, 126)(請參閱您可以通過轉換的樣式代碼文檔,126代表我們通過ISO8601格式的日期)

查詢包括從varchar到datetime的轉換爲:

update mytable set IssueDateOAD = convert(bigint, convert(datetime, IssueDate, 126)) + 2

+0

對不起,我忘了補充說我想轉換爲OADate格式。我已經嘗試過CONVERT,但沒有多少運氣,你有沒有例子 – Tim 2013-04-25 06:15:21

+0

SQL服務器在1900-01-01 00:00開始,OAdate從1899-12-30 00:00開始,所以選擇convert(bigint,getdate() ) - 2應該做什麼? – EventHorizon 2013-04-25 06:19:06

+0

*加* 2,不減號。注意到編輯我自己的評論爲時已晚。 – EventHorizon 2013-04-25 06:28:42