SQL Server中時間段查詢和資料型別轉換

2021-09-06 12:00:02 字數 4445 閱讀 3569

不知道什麼時候對資料獨有情種,也許是因為所學專業的緣故,也許是在多年的工作中的親身經歷,無資料,很多事情幹不了,資料精度不夠,也很多事情幹不了,有一次跟乙個朋友開玩笑說,如果在寫**的時候,能有乙份獨一無二的資料,那麼這已經超過別人一大截,但這畢竟死空中樓閣,事與願違的事情見多了,也就不足為其,我深知資料的重要,但卻因為得不到資料而煩惱,現在想想,這又是何必呢,也許自己有了資料,反而不會經常靜下心去思考,人就是這樣對自己身邊擁有點的東西往往關心不足,考慮不周。

所謂的有得有失,我想我得到的就是自己的親身感受吧!

資料中蘊含的很多隱性價值,所以人們多年的努力就是將這些價值利用起來,不管是圖表,bi,或者資料探勘目的一樣,都是為了裡面潛在價值。

資料如何儲存?資料種類繁多,結構不已,有數字型的,比如說浮點型的,整形的,想當初第一台計算機問世應該就是為了科學計算的需求吧。日新月異的今天,資料發生了很大的變化,字串,日期等等,其實這些都是計算機給其定義的儲存結構,但是往往我們需要進行資料的轉換,比如我,我就比較懶散,在資料儲存的時候,都將其資料按照字串儲存,這樣比較安全,也容易儲存,但是這個時候對這個資料的理解就有了不同的意義,字串比如說'

2010-09-01 07:00:0』,這個明顯就是日期,但是計算機用字串儲存,在日後進行檢視或者使用的時候,這將會帶來眾多的不便,所以建議,資料儲存的時候按照其原始格式。

不同的資料型別有不同的操作,在程式設計的時候應該深有體會,比如字串來說,字串有trim,length,substring等,數字型的一般就是加減乘除,日期型的,日期型因為表示方法很多,所以也比較特殊,下面就介紹日期型別在資料庫中的查詢,下面是sql server的的,不同的資料庫可能不太一樣。

/*

***** script for selecttopnrows command from ssms *****

*/select

*from dbo.vehicledata20100901 where createdate between

'2010-09-01 07:00:0

'and

'2010-09-01 09:00:0

'select

*from fcdbackup20100900_new.dbo.vehicledata20100901 where

datediff (s, '

2010-09-01 07:00:0

', createdate ) >

0and

datediff(s, '

2010-09-01 09:00:0

', createdate )<

0

在進行資料轉換的時候,也應該有所注意在sql server中,cast和convert函式都可用於型別轉換,其功能是相同的,只是語法不同.cast一般更容易使用,convert的優點是可以格式化日期和數值.

select

cast('

123'

asint) --

123select

convert(int, '

123') --

123select

cast(123.4

asint) --

123select

convert(int, 123.4) --

123

select

cast('

123.4'as

int)

select

convert(int, '

123.4')

--conversion failed when converting the varchar value '123.4' to data type int.

select

cast('

123.4'as

decimal) --

123select

convert(decimal, '

123.4

') --

123

select

cast('

123.4'as

decimal(9,2)) --

123.40

select

convert(decimal(9,2), '

123.4

') --

123.40

declare

@num

money

set@num

=1234.56

select

convert(varchar(20), @num, 0) --

1234.56

select

convert(varchar(20), @num, 1) --

1,234.56

select

convert(varchar(20), @num, 2) --

1234.5600

select

convert(varchar(100), getdate(), 0): 05

162006

10:57am

select

convert(varchar(100), getdate(), 1): 05/16

/06select

convert(varchar(100), getdate(), 2): 06.05.16

select

convert(varchar(100), getdate(), 3): 16/05

/06select

convert(varchar(100), getdate(), 4): 16.05.06

select

convert(varchar(100), getdate(), 5): 16-05

-06select

convert(varchar(100), getdate(), 6): 16

0506

select

convert(varchar(100), getdate(), 7): 05

16, 06

select

convert(varchar(100), getdate(), 8): 10:57:46

select

convert(varchar(100), getdate(), 9): 05

162006

10:57:46

:827am

select

convert(varchar(100), getdate(), 10): 05-16

-06select

convert(varchar(100), getdate(), 11): 06/05

/16select

convert(varchar(100), getdate(), 12): 060516

select

convert(varchar(100), getdate(), 13): 16

052006

10:57:46:937

select

convert(varchar(100), getdate(), 14): 10:57:46:967

select

convert(varchar(100), getdate(), 20): 2006-05

-1610:57:47

select

convert(varchar(100), getdate(), 21): 2006-05

-1610:57:47.157

select

convert(varchar(100), getdate(), 22): 05/16

/0610:57:47

amselect

convert(varchar(100), getdate(), 23): 2006-05

-16select

convert(varchar(100), getdate(), 24): 10:57:47

select

convert(varchar(100), getdate(), 25): 2006-05

-1610:57:47.250

select

convert(varchar(100), getdate(), 100): 05

162006

10:57am

select

convert(varchar(100), getdate(), 101): 05/16

/2006

select

convert(varchar(100), getdate(), 102): 2006.05.16

select

convert(varchar(100), getdate(), 103): 16/05

/2006

select

convert(varchar(100), getdate(), 104): 16.05.2006

sql server 按時間段查詢

在寫按時間段查詢的sql語句的時候 一般我們會這麼寫查詢條件 where date 2010 01 01 and date 2010 10 1 但是在實執行sql時些語句會轉換成這樣 where date 2010 01 01 0 00 00 and date 2010 10 1 0 00 00 再...

Sql Server常用時間段查詢彙總

本文對應sql server 中常用的時間查詢的進行一些彙總,例如查詢當天的 本週的 本月的 本季度的,某個時間段內的時間。例項 我的 表名 mytable 欄位名 mydate 一 當天 某兩個時間段 select from mytable where datediff dd,mydate,get...

Sql Server常用時間段查詢彙總

本文對應sql server 中常用的時間查詢的進行一些彙總,例如查詢當天的 本週的 本月的 本季度的,某個時間段內的時間。例項 我的 表名 mytable 欄位名 mydate 一 當天 某兩個時間段 select from mytable where datediff dd,mydate,get...