2011-03-28 25 views
0

我正在使用無法更改的數據庫結構 - 在SQL Server 2005環境中。有兩個字段 - 一個完整的日期時間字段和一個HHMM字段。需要從單獨的HHMM字段「構建」一個日期時間字段

軟件應用程序並不總是填充這兩個字段,所以我需要創建一個完整的日期時間字段。如果日期時間字段的小時分秒部分爲零,那麼我需要從日期時間字段的日期部分,HHMM字段的小時數,HHMM的分鐘數創建完整的日期時間字段和零秒。

我該怎麼做?

+0

你試圖做到這一點的SQL?如果有,你有什麼權限?什麼時候將日期/時間設置爲空時?似乎你將不得不補充一個日期/時間,這不會讓我覺得有用。 – bendemes 2011-03-28 13:34:26

+0

那麼,你在用什麼語言?當然,您可以選擇零小時和分鐘的所有條目,相關的HHMM條目,然後進行更新。 – Olli 2011-03-28 13:35:11

回答

0

Cythia:

您使用哪種編程語言?您可能想要查找像createDate()或createDateTime()這樣的函數,它通常接受字符串輸入和格式掩碼。你可能也會有像Now()和Today()這樣的函數,它會根據當前時間生成一個時間變量。如果您使用的語言是嚴格鍵入的,則可能必須使用類似ConvertToString()或AsString()的函數。當然,所有這些函數名稱在語言和語言之間都會有很大差異。

所以這裏有點一步一步 1.獲取您的初始日期時間變量 2.創建一個新的日期變量(即指明MyDate),並使用DateFormatFunction(設置),在只返回日期(MM/DD/YYYY) 3.創建一個新的時間變量(即MYTIME),並使用TimeFormatFunction()以TimeFormatFunction()方式返回您想要的掩碼指定的格式(即HH:MM:SS) 4.檢查MYTIME是否爲00:00:00。 5.如果是,則創建一個新的時間變量(即MYTIMENOW),並使用類似Now(「HH:MM:SS」)的方式將其設置爲當前時間,並使用適當的掩碼。 6.現在,根據日期在MS SQL中的格式,您需要創建一個新的DateTime變量(即MYDATETIME)並使用CreateDateTime(「MYDATE MYTIME」)函數創建一個正確的日期格式,該函數允許您相應地掩蓋它。 7.將生成的MYDATETIME變量插入數據庫。

如果您讓我知道您的語言,我可能會告訴您一些注意事項,因爲在跨平臺的日期/時間工作時總會有「陷阱」。

+0

我最終必須用其他語言編寫公式,但現在我正在使用SQLserver2005創建一個完整的日期時間字段。我真的不明白你對getdate/now的引用。我必須使用現有表中的兩個現有字段,日期時間字段和HHMM字段來創建「完整」日期時間字段。 – Cynthia 2011-03-28 15:17:04

+0

軟件應用程序(現成的)無法正確填充日期時間字段。有時,「時間」保存在日期時間字段中,有時「時間」保存在HHMM字段中。在我的報告中,我必須展示一個完整的日期時間字段。 – Cynthia 2011-03-28 15:40:46

1

更新所有有沒有時間部分的日期時間值,隨着時間的部分從HHMM

UPDATE atable 
SET DateTime = DateTime + STUFF(HHMM, 3, 0, ':') 
WHERE DateTime = DATEADD(day, DATEDIFF(day, 0, DateTime), 0) 

假設的HHMM列是固定格式的字符串,即你總是在HHMM中有2位小時和2位數的分鐘,如'1400''0825'。該查詢在時間部分之間插入:,並將結果時間(表示爲字符串)添加到日期時間列值。


如果HHMM是整數,它可以缺少前導零點或零爲倍像08:0000:05(其將被分別存儲,作爲8005)。因此,在插入冒號之前,我們需要將該值帶到格式爲HHMM的字符串,例如,像這樣:

RIGHT(10000 + HHMM, 4) 

現在我們可以這樣表達過上述查詢:

UPDATE atable 
SET DateTime = DateTime + STUFF(RIGHT(10000 + HHMM, 4), 3, 0, ':') 
WHERE DateTime = DATEADD(day, DATEDIFF(day, 0, DateTime), 0) 
相關問題