資料庫中查詢datetime(單日)總結

2021-06-04 12:00:07 字數 4802 閱讀 5351



每當發聲事件的時候都會記錄到資料庫裡面,如上圖。

定義time的時候使用的是datetime,所以記入不僅有日期還有時間,當準備查詢事件的時候使用的是兩個datetimepicker控制項的value來獲得的查詢時間段,使用的是

select * from between  datetimepicker1.value and datetimepicker2.value,實現的查詢。但是這樣子並不是得到的想要的只按照日期查詢的結果。

在網上搜尋 發現至少有兩種方式可以實現 單日查詢。

select * from tomcsdb.dbo.loginfo where datediff(day,time,'2012-01-10')=0;

select * from tomcsdb.dbo.loginfo where convert(nvarchar(10),time,120)='2012-01-10';

像datatime感覺也沒什麼,但是用的時候往往就會出問題,所以還是一次搞清楚為好,都算是基礎知識。還有就是要看到sql語句不僅僅是insert,select,delete,update

select * from [dealingdb].[dbo].[complaint] (表名)

where (rettime(欄位名) between convert(datetime, left(getdate(), 10) + ' 00:00:00.000') 

and convert(datetime, left(getdate(), 10) + ' 00:00:00.000') + 1) 

order by rettime(欄位名) desc 

乙個使用的是datediff函式,下面給出一些網上的說明

--查詢當天: 

select

* from

info 

where

datediff(dd,datetime,getdate())=0   

--查詢24小時內的: 

select

* from

info 

where

datediff(hh,datetime,getdate())<=24   

--info為表名,datetime為資料庫中的字段值

--查詢近三天:

select

* from

info 

where

datediff(dd,datetime,getdate())<=3

--info為表名,datetime為資料庫中的字段值

sql** powered by chenjiazi

--查詢當天記錄另類的方法 

select

*   

from

j_gradeshop   

where

(gaddtime 

between

convert

(datetime, 

left

(getdate(), 10) + 

' 00:00:00.000'

)   

andconvert

(datetime, 

left

(getdate(), 10) + 

' 00:00:00.000'

) + 1)   

order

bygaddtime 

desc

datediff 函式:

語法:

datediff ( datepart , startdate , enddate )
備註:

enddate 減去 startdate。如果 startdate 晚於 enddate,則返回負值。

如果結果超出整數值範圍,則 datediff 將產生錯誤。對於毫秒,最大數是 24 天 20 小時 31 分鐘零 23.647 秒。對於秒,最大數是 68 年。

跨分鐘、秒和毫秒等邊界計算的方法使得 datediff 指定的結果在所有資料型別中均一致。結果是帶正負號的整數值,它等於跨第乙個和第二個日期間的 datepart 邊界數。例如,在 1 月 4 日(星期日)和 1 月 11 日(星期日)之間的星期數是 1。

可以再mssql中測試:

sql**

--兩個時間差剛好是24 

--列印的方式 

print datediff(hh,

'2009-1-1 0:0:0'

,'2009-1-2 0:0:0'

)   

--查詢的方式 

print datediff(hh,

'2009-1-1 0:0:0'

,'2009-1-2 0:0:0'

)  

sql**

--本月記錄 

select

* from

表 where

datediff(

month

,[dateadd],getdate())=0   

--本週記錄 

select

* from

表 where

datediff(week,[dateadd],getdate())=0   

--包括本年這些查詢方式是一樣的 

sqlserver中的時間函式

1.   當前系統日期、時間 

select getdate()  

2. dateadd   在向指定日期加上一段時間的基礎上,返回新的 datetime 值

例如:向日期加上2天 

select dateadd(day,2,'2004-10-15')   --返回:2004-10-17 00:00:00.000

3. datediff 返回跨兩個指定日期的日期和時間邊界數。

select datediff(day,'2004-09-01','2004-09-18')    --返回:17

4. datepart 返回代表指定日期的指定日期部分的整數。

select datepart(month, '2004-10-15')   --返回 10

5. datename 返回代表指定日期的指定日期部分的字串

select datename(weekday, '2004-10-15')   --返回:星期五

6. day(), month(),year() --可以與datepart對照一下

select 當前日期=convert(varchar(10),getdate(),120) 

,當前時間=convert(varchar(8),getdate(),114)

select datename(dw,'2004-10-15')

select 本年第多少周=datename(week,'2004-10-15')

,今天是週幾=datename(weekday,'2004-10-15')

函式引數/功能

getdate( )

返回系統目前的日期與時間

datediff (interval,date1,date2)

以interval 指定的方式,返回date2 與date1兩個日期之間的差值 date2-date1

dateadd (interval,number,date)

以interval指定的方式,加上number之後的日期

datepart (interval,date)

返回日期date中,interval指定部分所對應的整數值

datename (interval,date)

返回日期date中,interval指定部分所對應的字串名稱

引數 interval的設定值如下:

值縮 寫(sql server)

access 和 asp

說明year

yyyyyy

年 1753 ~ 9999

quarter

qqq  

季 1 ~ 4

month

mmm  

月1 ~ 12

day of yeardyy

一年的日數,一年中的第幾日 1-366

daydd

d  日,1-31

weekdaydww

一周的日數,一周中的第幾日 1-7

week

wkww

周,一年中的第幾周 0 ~ 51

hour

hhh  

時0 ~ 23

minutemin

分鐘0 ~ 59

secondsss

秒 0 ~ 59

millisecondms-

毫秒 0 ~ 999

access 和 asp 中用date()和now()取得系統日期時間;其中datediff,dateadd,datepart也同是能用於access和asp中,這些函式的用法也類似

舉例:1.getdate() 用於sql server :select getdate()

2.datediff('s','2005-07-20','2005-7-25 22:56:32')返回值為 514592 秒

datediff('d','2005-07-20','2005-7-25 22:56:32')返回值為 5 天

3.datepart('w','2005-7-25 22:56:32')返回值為 2 即星期一(週日為1,週六為7)

datepart('d','2005-7-25 22:56:32')返回值為 25即25號

datepart('y','2005-7-25 22:56:32')返回值為 206即這一年中第206天

datepart('yyyy','2005-7-25 22:56:32')返回值為 2005即2023年

mysql資料庫筆記(三) 查詢資料 單錶查詢

查詢語法 語法格式 select column name,column name from table name 查詢emp表中資訊 查詢單個列 查詢員工的員工編號號資訊 select id from s emp 查詢多個列 查詢員工的員工編號,姓名和工資資訊 select id,last name...

資料庫中的查詢

案例1 查詢員工表的中前五行 select from employees limit 5 select from employees limit 0,5 案例2 查詢 員工表 的第11條到第20條 select from employees limit 10,10 案例3 查詢員工表的第15條到30...

MySQL資料庫全面單錶查詢方法

當前使用中的資料庫 select database 檢視當前mysql版本 select version 檢視當前使用者 select user 檢視運算結果 select 1 2 欄位用 隔開,至少有乙個字段,最終結果集按照這個順序顯示 select 欄位1,欄位2.from 表名 代表所有的字段...