如何在SQL中存儲時間或時間範圍? 它不會是一個日期時間,因爲它只是讓我們說下午4:30(不是,1月3日,下午4:30)。這些將是每週或每日會議。 我需要的查詢類型當然是用於顯示,但以後還會包含複雜的查詢,例如避免計劃中的衝突。 我寧願選擇現在最好的數據類型。SQL中一天的存儲時間
我正在使用MS SQL Server Express 2005.
謝謝!
彌敦道
如何在SQL中存儲時間或時間範圍? 它不會是一個日期時間,因爲它只是讓我們說下午4:30(不是,1月3日,下午4:30)。這些將是每週或每日會議。 我需要的查詢類型當然是用於顯示,但以後還會包含複雜的查詢,例如避免計劃中的衝突。 我寧願選擇現在最好的數據類型。SQL中一天的存儲時間
我正在使用MS SQL Server Express 2005.
謝謝!
彌敦道
我仍然會用DateTime數據類型,而忽略日期值推薦 - 最好使用SQL(谷歌它)的靜態爲MinDate。這將爲您提供使用強類型字段的好處,唯一的成本將會是幾個額外的字節。
至於範圍,將它們存儲在兩個單獨的列。然後你可以從另一個減去一個來確定差異。
編輯:做了一些谷歌搜索。
所以如果你堅持2005年,選擇你的靜態日期,如1/1/2000,並存儲你的時間。所以1m:30s會是2000-1-1 00:01:30.000,1h:15m會是2000-1-1 01:15:00.000
然後你可以做Date2 - Date1並得到你的結果( 1h:15:m - 1m:30s)2000-01-01 01:13:45.000。轉換它,你會有1:13:45。
根據需要,您可以將它作爲int存儲爲24小時時間和格式。
或者其存儲爲一些固定的日期一datetime和刪除它根據需要顯示: 2000年1月1日下午4時30
我會用時間字段去,因爲它可以讓你所有的日期時間相關的電源功能。
您可能需要考慮將其存儲爲表示自午夜以來的分鐘數的int列。在你的實體中,你可以將它公開爲表示同一事物的TimeSpan(或int)。爲了執行查詢,您只需要在顯示值(時間格式)和數據庫值(分鐘)之間進行轉換,這可以很容易地在您的實體中完成(例如TimeSpan.TotalMinutes)。
就我個人而言,我會發現這是升級到2008年有一個單獨的時間數據類型的原因。
對我來說,這聽起來像你正在開發一種類型的會議調度程序或顯示會議的東西。
我認爲我將它設置爲2列MeetingStart和MeetingEnd,都作爲日期時間字段。這樣,您可以確定會議的長度,並且由於您已有日期,因此您可以輕鬆使用該日期將其顯示在日曆或其他內容上。
請注意,以這種方式使用CONVERT將禁用任何使用日期時間列上的索引 – 2009-05-01 20:25:42
有趣的是,我沒有意識到這種效果。感謝您的提示 – STW 2009-05-01 21:48:14
對於未來的讀者,在使用此方法之前請檢查@tvanfosson發表的評論http://stackoverflow.com/questions/812631/store-time-of-the-day-in-sql?lq=1#comment622411_812669 – Termiux 2013-04-24 20:33:44