Mysql資料庫時間比較SQL和有關時間SQL

2021-10-03 19:28:51 字數 4121 閱讀 5397

查詢當天的所有資料

select*

from

表名where

datediff(字段

,now

()) =

0select*

from

表名 where

to_days

(時間欄位名) =

to_days

(now

());

查詢昨天的所有資料

select*

from

表名 where

datediff

(字段,

now())=

-1select*

from

表名 where

to_days

(now

()) -

to_days

(時間欄位名) =

1查詢未來第n天的所有資料

//當n為負數時,表示過去第n天的資料

select*

from

表名where

datediff

(字段,

now())=n

查詢未來n天內所有資料

//n天內

select*

from

表名 where

datediff

(字段,

now())and

datediff

(字段,

now())>=

0查詢出今天,年月日

select date_sub

(curdate

(),

interval

0day

)幾個小時內的資料

date_sub(now

(), interval

5hour)7天

select*

from

表名 wher

date_sub

(curdate

(),

interval

7day

) <=

date

(時間欄位名)

近30天

select*

from

表名 where

date_sub

(curdate

(),

interval

30day

) <=

date

(時間欄位名)

本月select*

from

表名 where

date_format

( 時間欄位名,

'%y%m'

) =

date_format

( curdate

( ) ,

'%y%m'

)上一月

select*

from

表名 where

period_diff

( date_format

( now

( ) ,

'%y%m'

) ,

date_format

( 時間欄位名,

'%y%m'

) ) =

1查詢過去n天內所有資料

//包含當天

select*

from

表名 where

datediff

(字段,

now())<=

0and

datediff

(字段,

now())>-n

//不包含當天

select*

from

表名 where

datediff

(字段,

now())<

0and

datediff

(字段,

now())>-n

datediff函式說明:

datediff() 函式用於返回兩個日期之間的天數。 語法:datediff(date1,date2)

date1 和 date2

引數是合法的日期或日期/時間表示式。 注釋: 

1. 只有值的日期部分參與計算。 

2. 當日期date1時函式返回值為正數,

date1=date2

時函式返回值為0,

date1>date2

時函式返回值為負數。

3. mysql的datediff只有兩個引數。sql server有三個引數,詳細內容可見:sql date函式

在mysql使用過程中,日期一般都是以datetime、timestamp等格式進行儲存的,但有時會因為特殊的需求或歷史原因,日期的儲存格式是varchar,那麼我們該如何處理這個varchar格式的日期資料呢

使用函式str_to_data(str,format)

時間欄位為greens_data 型別為 varchar

查詢指定一段時間中的資料並排序

1、第一種

函式str_to_date(str,format):將字串轉為時間格式

select greens_id,greens_date from greens

where str_to_date(greens_date,'%y-%m-%d') between '2019-08-01' and '2019-10-01'

order by greens_date desc

2、第二種

select greens_id,greens_date from greens

where str_to_date('開始時間','%y-%m-%d') and str_to_date('結束時間','%y-%m-%d')

order by str_to_date('時間欄位名','%y-%m-%d') desc

函式date_format(str,format):將時間格式轉為字串

函式now():返回格式為yyyy-mm-dd hh:mm:ss

函式curdate():返回格式為yyyy-mm-dd

查詢本月

select * from greens where date_format( greens_date, '%y%m' ) = date_format( curdate( ) , '%y%m' )

select * from 表名 where period_diff( date_format( now( ) , '%y%m' ) , date_format( 時間欄位名, '%y%m' ) ) =1

查詢今日資料:

select * from 表名 where to_days(時間欄位名) = to_days(now());

查詢昨日資料:

select * from 表名 where to_days( now( ) ) - to_days( 時間欄位名) <= 1

查詢本年資料

select * from `ht_invoice_information` where year(create_date)=year(now());

查詢本週資料:

select name,submittime from enterprise where yearweek(date_format(submittime,'%y-%m-%d')) = yearweek(now());

查詢上週資料:

select name,submittime from enterprise where yearweek(date_format(submittime,'%y-%m-%d')) = yearweek(now())-1;

資料庫訪問時間比較

在頁面上直接建grid,直接用sql取資料,比較不同的sql的反應時間。這個頁面上的grid是分頁顯示的,每個頁面是12行,查詢方法是 datetime date1 datetime.now datatable dt query.processsql sql語句 mes imesgrid1.data...

mysql時間比較

時間比較 當前時間是否在某個時間段之內 是否在create time 5天之內 select from message detail where unix timestamp now between unix timestamp create time and unix timestamp crea...

SQL時間相關 SQL日期,時間比較

sql server 中時間比較 例子 select count from table where datediff second 2004 09 18 00 00 18 2004 09 18 00 00 19 0 說明select datediff day,time1 time2 對應示例語句如下...