成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

T-SQL Programming: DateTime DataType Part2

數據庫 SQL Server
上文中我們介紹了DateTime的存儲格式,以及如何使用DateTime;本文主要講述DateTime類型四舍五入的問題。

上文中我們介紹了DateTime的存儲格式,以及如何使用DateTime;本文主要講述DateTime類型四舍五入的問題。 

2. DateTime類型四舍五入問題(rounding issues)

DateTime 與 String 之間的轉換并總是精確的。例如,“20060923 03:23:47:001” 轉換為DateTime類型時,此項將會轉換為離百分之三秒最近的時間。那將會轉換為“20060923 03:23:47.000”。為什么轉換結果是這樣呢?  是由于數據總是被轉換為 離 3/1000秒為計算單位的最近的時間。(那我們是否可以這樣理解這次轉換呢?其實,這次轉換涉及到的結果可以是 .000 和 .003 ,依據離3/1000秒最近的原則,.001 到.000為1毫秒 .001 到.003 是2毫秒,所以結果是.000).上述的字符串如果轉換為Smalldatetime類型時,結果將會是"20060923 03:24:00". 轉換為SmallDateTime時,總是將結果轉換為離 分為計算單位最近的時間。(可以這樣理解,03:23:47 轉換為SmallDateTime時,可以轉換為 03:23:00 和 03:24:00 由這兩個結果可以知道,轉換字符離03:24:00 只有13秒,所以轉換為 03:24:00.)那如果轉換字符分別為 “03:23:30 ” 和“03:23:29”時,轉換結果是什么呢?結果為“03:24:00” 和“03:23:00”。

同樣,當String 類型轉換為DateTime時,結果也是不精確的。String類型的值會被轉換為最接近的DateTime類型值。而不會向Decimal類型的值向INT類型的轉換,只是簡單的將后續的小數部分去掉,如10.99轉換結果為10。DateTim數據的毫秒部分總是遵循以下的格式,[0-9][0-9][037]。例如,毫秒部分的值為994時,在轉換為DateTime類型時,最終的結果將會是997. 999將會轉換為下一秒的000。因此,對于如下的語句而言,這就不是一個很好的過濾語句:

Where Dt  between '20060211 00:00:00.000'  and  '20060211 23:59:59.999' .為什么呢?通過以上分析可知,'20060211 23:59:59.999' 將會轉換為'20060212 00:00:00.000'。 因此根據上述條件,最終的結果中將會包含  '20060212 00:00:00.000' 的數據。為了改進上面的內容,我們可以將上邊界的值改為'20060211 23:59:59.997'。這樣就不會包含 '20060212 00:00:00.000'    的數據了。更好的條件使用方法,如下所示:

Where Dt >= '20060211 00:00:00.000' and Dt<'20060212 00:00:00.000'  .這種寫法無論DateTime類型還是SmallDateTime類型,都能夠正常使用。 

一些程序員在使用上面的 Dt >= '20060211 00:00:00.000' and Dt<'20060212 00:00:00.000'  時,喜歡去掉時間部分,寫成如下的形式:

 Dt >= '20060211' and Dt<'20060212'  在這種形式下,SQL Server 將會將字符形式轉換為指定日期的午夜時間。即 '20060211' 轉換為 20060211 00:00:00.000.

上面的過濾條件是 Search Argument(SARG),這就意味著查詢優化器會考慮使用索引的查詢操作提高性能。但是有些人會寫成如下的形式,使用SQL Server函數將日期部分取出來,再進行比較,如下:

Where Convert(Varchar(8),dt,112)='20060211' 這種寫法不是SARG形式,數據庫不會使用索引查詢,因此,應當避免此種寫法。

原文鏈接:http://www.cnblogs.com/fisher3/archive/2011/03/31/1998179.html

 

責任編輯:艾婧 來源: 博客園
相關推薦

2011-04-01 15:53:20

T-SQLDateTime

2022-12-19 09:02:04

深入布局協議HStack

2010-07-20 13:52:27

SQL Server

2011-10-19 10:07:16

T-SQL查詢變量

2010-07-06 10:36:35

SQL Server

2010-10-19 16:06:26

SQL Server索

2023-08-15 08:26:34

SQL Server查找死鎖

2009-05-06 17:31:17

SQL EnlightT-SQL分析器

2010-12-06 09:26:23

SQL Server

2017-03-30 07:56:30

測試前端代碼

2011-02-25 14:42:10

SQLwith關鍵字

2011-08-24 16:36:00

T-SQL

2010-07-19 13:22:45

SQL Server

2011-03-31 09:30:27

SQL Server數管理SQL

2013-01-05 13:49:00

2010-07-13 10:35:20

SQL Server2

2011-07-08 13:40:18

2010-06-30 14:54:42

SQL Server

2011-07-18 14:38:44

子查詢外部查詢

2010-11-10 10:57:43

T-SQL代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩免费看视频 | 91综合在线视频 | 久久久久久久久久久久91 | 国产精品毛片久久久久久 | 户外露出一区二区三区 | 亚洲播放一区 | 国产亚洲精品a | 怡红院免费的全部视频 | 一区二区中文 | 日韩有码一区二区三区 | 国产一区二区电影 | 国产欧美精品一区二区 | 国产男女视频网站 | 视频一区二区中文字幕 | 国产高潮好爽受不了了夜色 | 日韩av在线一区二区三区 | 国产精品日韩在线观看一区二区 | 国产三区四区 | 国产在线拍偷自揄拍视频 | 一级毛片视频在线 | 国产一级视频在线观看 | 久青草影院 | 日日骚av| 国产精品九九九 | 日日夜夜精品免费视频 | 在线观看国产 | 日本久久精品 | 在线观看免费毛片 | 一区二区三区欧美在线观看 | 人人干超碰 | 日日骚网 | 国产精品18hdxxxⅹ在线 | 成人一区在线观看 | 国产粉嫩尤物极品99综合精品 | 国内自拍第一页 | 日本午夜在线视频 | 黑人巨大精品欧美一区二区免费 | 99久久婷婷国产综合精品电影 | 日本久久网 | 国产 日韩 欧美 在线 | 国产在线精品一区二区三区 |