datetime 和 smalldatetime
代表日期和一天內的時間的日期和時間數據類型。
Microsoft SQL Server 用兩個 4 字節的整數內部存儲 datetime 數據類型的值。第一個 4 字節存儲 base date (即 1900 年 1 月 1 日)之前或之后的天數?;A日期是系統參考日期。不允許早于 1753 年 1 月 1 日的 datetime 值。第一個4 字節:1900 年1 月1 日當日為0 ;之前的日期是負數;之后日期是正數。另外一個 4 字節存儲以午夜后3 1/3 毫秒數所代表的每天的時間。
smalldatetime 數據類型存儲日期和每天的時間,但精確度低于 datetime 。 SQL Server 將 smalldatetime 的值存儲為兩個 2 字節的整數。第一個 2 字節存儲 1900 年 1 月 1 日后的天數。另外一個 2 字節存儲午夜后的分鐘數。日期范圍從1900 年 1 月 1 日到 2079 年 6 月 6 日,精確到分鐘。
可以將這兩種類型轉換成float 浮點數, 其中整數部分就是對應的日期字節, 而小數部分是時間相應的比例, 如datetime 的小數部分就是占整天的毫秒數的比例;smalldatetime 的小數部分就是占整天的分鐘數的比例. 因此我們可以直接將這兩種類型的變量和整數、浮點數進行直接的加減。
datetime
從 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和時間數據,精確度為百分之三秒(等于 3.33 毫秒或 0.00333 秒)。如下表所示,把值調整到 .000 、.003 、或 .007 秒的增量。示例
調整后的示例
01/01/98 23:59:59.999
1998-01-02 00:00:00.000
01/01/98 23:59:59.995,
01/01/98 23:59:59.996,
01/01/98 23:59:59.997, 或
01/01/98 23:59:59.998
1998-01-01 23:59:59.997
01/01/98 23:59:59.992,
01/01/98 23:59:59.993,
01/01/98 23:59:59.994
1998-01-01 23:59:59.993
01/01/98 23:59:59.990 或
01/01/98 23:59:59.991
1998-01-01 23:59:59.990
我們常常需要搜索指定日期范圍內的數據, 比如返回1998-01-01 當天內的數據, 你可能會這樣寫:
date >= ‘1998-01-01 00:00:00.000′ and date <= ‘1998-01-01 23:59:59.999 ‘
根據上面的調整規則, 其實這句語句的實際搜索范圍為:
date >= ‘1998-01-01 00:00:00.000′ and date <= ‘1998-01-02 00:00:00.000 ‘
你會看到這包括了1998-01-02 的數據, 所以最好的正確的搜索語句為:
date >= ‘1998-01-01 00:00:00.000′ and date < ‘1998-01-02 00:00:00.000 ‘
smalldatetime
從 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和時間數據精確到分鐘。29.998 秒或更低的 smalldatetime 值向下舍入為最接近的分鐘,29.999 秒或更高的 smalldatetime 值向上舍入為最接近的分鐘。
–returns time as 12:35
SELECT CAST(‘2000-05-08 12:35:29.998’ AS smalldatetime)
GO
–returns time as 12:36
SELECT CAST(‘2000-05-08 12:35:29.999’ AS smalldatetime)
GO
賦值:
上面說了時間的實際格式,我們在給一個時間變量賦值時肯定不會賦一個浮點數給該變量,更多的情況是我們給這個變量賦一個字符串,系統會自動將字符串變成時間格式并保存到數據庫中。若字符格式錯誤,則報錯。根據語言不同,世界上有多種不同的用字符串表示時間方式,我們可以通過 sp_helplanguage 查看不同語言下的缺省時間格式,如簡體中文的時間格式為 ymd ,可以通過 SET DATEFORMAT 來暫時更改這個缺省值。
時間函數
DATEADD :可以對時間類型的指定部分進行加減計算,雖然我們上面說了可以進行直接的加減,但是我們可以更方便的利用這個函數對指定部分,如年月日時分秒等進行加減。我們常常根據一個時間來構造出另外一個時間,比如下個月的今天 , 本月底等等,我們應該也盡量使用 DATEADD 函數來構造,它可以避免一些閏月、年底、月底之類的錯誤,我以前就是根據 DATENAME 來構造的,常常要考慮這些問題。
DATEDIFF :該函數對兩個時間變量對指定部分進行比較計算。此函數不考慮比指定日期部分更高的粒度級別,它只考慮更低級別的部分。對時間的比較應盡量使用本函數。
舉個出錯的例子:返回兩個時間變量的小時差。若使用 DATEPART(HOUR, @T2 – @T1) 就可能會出錯;你應該使用 DATEDIFF(HOUR, @T1, @T2) 。
DATEPART :返回時間變量的指定部分的值。
DATENAME :返回時間變量的指定部分的值,和 DATAPART 不同的是本函數返回的是個字符串類型
GETDATE() 返回本機器的當前時間。 CURRENT_TIMESTAMP 變量與本函數功能相同。
GETUTCDATE() 返回本機器的當前 UTC (格林尼治標準時間)時間。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
furmark1.21怎么用?如何使用軟件的默認界面語言為英語,但支持多種語言。只需在“Lang”下拉框中選擇“chinese-s”即可顯示熟悉的簡體中文界面。然后選擇“穩定性測試”和“極端折磨模式”,點擊軟件底部的“開始”,測試顯卡的穩定性。然后選擇“穩定性測試”和“極端折磨模式”在測試過程中,將出現一個測試窗口,在該窗口上顯示圖形卡的溫度曲線,以便準確了解圖形卡的當前狀態。只要沒有人為干預,試...
Love的代碼是什么?愛當然意味著愛,但什么是愛?愛:“L”代表傾聽。愛就是不帶偏見地傾聽對方的需求,幫助他們?!贝砀屑?。愛需要不斷的感恩和同情,付出更多,澆灌愛的幼苗?!薄癡”代表價值。愛是表示尊重,表達體貼、真誠的鼓勵和愉快的贊美?!薄癊”代表“公差”。愛是善良,原諒彼此的缺點和錯誤,保持長處和短處。我愛你的代碼?關于“我愛你”的數字代碼1。使用ASC(“I love you”)函數將asc...
北京國家會議中心在什么地方?公交路線:地鐵4號線大興線地鐵2號線地鐵8號線,全程約23.4公里。1.從公益西橋乘坐地鐵4號線大興線,經過6站到達宣武門站。2.乘坐地鐵2號線,經過7站,到達鼓樓街站。3.乘坐地鐵8號線,經過4站,到達奧林匹克公園站(E出口)。4.步行約440米至國家會議中心。北京國家會議中心在什么地方?我想參加CP05伴侶節…但是不知道國家會議中心在哪里?地鐵可以直達嗎?我住的地方...