關於MySQL資料庫如何按時間查詢

2022-04-23 11:16:17 字數 3199 閱讀 2037

這裡做了幾個測試

select

*from simingpai where

timestamp(createtime) >=

'2015-9-6';

select

*from simingpai where

timestamp(createtime) >=

'2015-9-6 00:00:00';

select

*from simingpai where

timestamp(createtime) >=

'2015-9-6 18:15:00';

select

*from simingpai where date(createtime) >=

'2015-9-6';

select

*from simingpai where date(createtime) >=

'2015-9-6 00:00:00';

select

*from simingpai where date(createtime) >=

'2015-9-6 00:00:01';

select

*from simingpai where date(createtime) >=

'2015-9-6 18:15:00

';

這幾條語法都沒有問題,timestamp型別支援時分秒,date型別第一條和第二條輸出結果相同(估計是忽略了後面的時分秒),但是第三條和第四條語句就會報錯。應該是不支援時分秒。

select

*from simingpai where

timestamp(createtime) >=

2015-9

-6;select

*from simingpai where

timestamp(createtime) >=

2015-9

-600:00:00

;select

*from simingpai where

timestamp(createtime) >=

2015-9

-618:15:00

;select

*from simingpai where date(createtime) >=

2015-9

-6;select

*from simingpai where date(createtime) >=

2015-9

-600:00:00

;select

*from simingpai where date(createtime) >=

2015-9

-600:00:01

;select

*from simingpai where date(createtime) >=

2015-9

-618:15:00;

這裡的sql語句中timestamp型別

和date型別的第一條語句能輸出結果,其他的都不正確。這種格式應該不支援時分秒。

按照時間進行查詢

查詢當天的所有資料

select

*from tg_winner where

year(createtime)=

year(now()) and

month(createtime)=

month(now()) and

day(createtime)=

day(now());

select

*from tg_winner where to_days(createtime) =

to_days(now());

select

*from tg_winner where date(createtime) =

curdate();

查詢某天的所有資料

select

*from tg_winner where date(createtime) =

'2015-9-6';

select

*from tg_winner where to_days(createtime) = to_days('

2015-09-06');

select

*from tg_winner where createtime = date_format(#,'

%y-%m-%d %h:%i:%s

');

#為mybatis的.xml檔案中實體類對應的date型別的字段。即要傳入的日期型別的變數

mysql查詢 昨天 一周前 一月前 一年前的資料

mysql 昨天 一周前 一月前 一年前的資料 這裡主要用到了date_sub,

參考如下

select

*from

tg_winner

where createtime>date_sub(curdate(), interval 1

day)

where createtime>date_sub(curdate(), interval 1

week)

where createtime>date_sub(curdate(), interval 1

month

)where createtime>date_sub(curdate(), interval 1

year

注意:如果資料庫中時間以unix時間戳的形式存放的話,在時間對比上需要更改為統一格式:

需要用unix_timestamp()轉化為unix時間戳形式對比:

where createtime>unix_timestamp(date_sub(curdate(), interval 1

day))

where createtime>unix_timestamp(date_sub(curdate(), interval 1

week))

where createtime>unix_timestamp(date_sub(curdate(), interval 1

month

)) where createtime>unix_timestamp(date_sub(curdate(), interval 1

year))

createtime為資料庫的時間字段

mysql按時間獲取資料

獲取今年所有資料 select from my date where year date f year curdate 獲取去年所有資料 select from my date where year date f year date sub curdate interval 1 year 獲取本季度...

資料庫 mysql如何獲取當前時間

1.1 獲得當前日期 時間 date time 函式 now 除了now 函式能獲得當前的日期時間外,mysql 中還有下面的函式 current timestamp current timestamp localtime localtime localtimestamp localtimestam...

資料庫 mysql如何獲取當前時間

1.1 獲得當前日期 時間 date time 函式 now 除了 now 函式能獲得當前的日期時間外,mysql 中還有下面的函式 current timestamp current timestamp localtime localtime localtimestamp localtimesta...