人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

SQLSERVER 中datetime 和 smalldatetime類型分析說明

發(fā)布日期:2022-01-30 16:04 | 文章來源:源碼中國

datetime 和 smalldatetime
代表日期和一天內(nèi)的時間的日期和時間數(shù)據(jù)類型。
Microsoft SQL Server 用兩個 4 字節(jié)的整數(shù)內(nèi)部存儲 datetime 數(shù)據(jù)類型的值。第一個 4 字節(jié)存儲 base date (即 1900 年 1 月 1 日)之前或之后的天數(shù)?;A(chǔ)日期是系統(tǒng)參考日期。不允許早于 1753 年 1 月 1 日的 datetime 值。第一個4 字節(jié):1900 年1 月1 日當日為0 ;之前的日期是負數(shù);之后日期是正數(shù)。另外一個 4 字節(jié)存儲以午夜后3 1/3 毫秒數(shù)所代表的每天的時間。
smalldatetime 數(shù)據(jù)類型存儲日期和每天的時間,但精確度低于 datetime 。 SQL Server 將 smalldatetime 的值存儲為兩個 2 字節(jié)的整數(shù)。第一個 2 字節(jié)存儲 1900 年 1 月 1 日后的天數(shù)。另外一個 2 字節(jié)存儲午夜后的分鐘數(shù)。日期范圍從1900 年 1 月 1 日到 2079 年 6 月 6 日,精確到分鐘。
可以將這兩種類型轉(zhuǎn)換成float 浮點數(shù), 其中整數(shù)部分就是對應(yīng)的日期字節(jié), 而小數(shù)部分是時間相應(yīng)的比例, 如datetime 的小數(shù)部分就是占整天的毫秒數(shù)的比例;smalldatetime 的小數(shù)部分就是占整天的分鐘數(shù)的比例. 因此我們可以直接將這兩種類型的變量和整數(shù)、浮點數(shù)進行直接的加減。
datetime
從 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和時間數(shù)據(jù),精確度為百分之三秒(等于 3.33 毫秒或 0.00333 秒)。如下表所示,把值調(diào)整到 .000 、.003 、或 .007 秒的增量。

示例

調(diào)整后的示例

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


我們常常需要搜索指定日期范圍內(nèi)的數(shù)據(jù), 比如返回1998-01-01 當天內(nèi)的數(shù)據(jù), 你可能會這樣寫:
date >= ‘1998-01-01 00:00:00.000' and date <= ‘1998-01-01 23:59:59.999 '
根據(jù)上面的調(diào)整規(guī)則, 其實這句語句的實際搜索范圍為:
date >= ‘1998-01-01 00:00:00.000' and date <= ‘1998-01-02 00:00:00.000 '
你會看到這包括了1998-01-02 的數(shù)據(jù), 所以最好的正確的搜索語句為:
date >= ‘1998-01-01 00:00:00.000' and date < ‘1998-01-02 00:00:00.000 '
smalldatetime
從 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和時間數(shù)據(jù)精確到分鐘。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
賦值:
上面說了時間的實際格式,我們在給一個時間變量賦值時肯定不會賦一個浮點數(shù)給該變量,更多的情況是我們給這個變量賦一個字符串,系統(tǒng)會自動將字符串變成時間格式并保存到數(shù)據(jù)庫中。若字符格式錯誤,則報錯。根據(jù)語言不同,世界上有多種不同的用字符串表示時間方式,我們可以通過 sp_helplanguage 查看不同語言下的缺省時間格式,如簡體中文的時間格式為 ymd ,可以通過 SET DATEFORMAT 來暫時更改這個缺省值。
時間函數(shù)
DATEADD :可以對時間類型的指定部分進行加減計算,雖然我們上面說了可以進行直接的加減,但是我們可以更方便的利用這個函數(shù)對指定部分,如年月日時分秒等進行加減。我們常常根據(jù)一個時間來構(gòu)造出另外一個時間,比如下個月的今天 , 本月底等等,我們應(yīng)該也盡量使用 DATEADD 函數(shù)來構(gòu)造,它可以避免一些閏月、年底、月底之類的錯誤,我以前就是根據(jù) DATENAME 來構(gòu)造的,常常要考慮這些問題。
DATEDIFF :該函數(shù)對兩個時間變量對指定部分進行比較計算。此函數(shù)不考慮比指定日期部分更高的粒度級別,它只考慮更低級別的部分。對時間的比較應(yīng)盡量使用本函數(shù)。
舉個出錯的例子:返回兩個時間變量的小時差。若使用 DATEPART(HOUR, @T2 - @T1) 就可能會出錯;你應(yīng)該使用 DATEDIFF(HOUR, @T1, @T2) 。
DATEPART :返回時間變量的指定部分的值。
DATENAME :返回時間變量的指定部分的值,和 DATAPART 不同的是本函數(shù)返回的是個字符串類型
GETDATE() 返回本機器的當前時間。 CURRENT_TIMESTAMP 變量與本函數(shù)功能相同。
GETUTCDATE() 返回本機器的當前 UTC (格林尼治標準時間)時間。

香港穩(wěn)定服務(wù)器

版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部