1、date_format引數格式
格式 描述
%a 縮寫星期名
%b 縮寫月名
%c 月,數值
%d 帶有英文本首的月中的天
%d 月的天,數值(00-31)
%e 月的天,數值(0-31)
%f 微妙
%h 小時(00-23)
%h 小時(01-12)
%i 小時(01-12)
%i 分鐘,數值(00-59)
%j 年的天(001-366)
%k 小時(0-23)
%l 小時(1-12)
%m 月名
%m 月,數值(00-12)
%p am或pm
%r 時間,12-小時(hh:mm:ss am或pm)
%s 秒(00-59)
%s 秒(00-59)
%t 時間, 24-小時(hh:mm:ss)
%u 周(00-53)星期日是一周的第一天
%u 周(00-53)星期一是一周的第一天
%v 周(01-53)星期日是一周的第一天,與%x使用
%v 周(01-53)星期一是一周的第一天,與%x使用
%w 星期名
%w 周的天(0=星期日, 6=星期六)
%x 年,其中的星期日是周的第一天,4位,與%v使用
%x 年,其中的星期一是周的第一天,4位,與%v使用
%y 年,4位
%y 年,2位
2、時間相關查詢
select (datediff(date_add(curdate(), interval - day(curdate())+ 1
day), date_add(curdate()- day(curdate())+ 1, interval -1
month))) 上月總天數
, date_add(curdate(),interval -day(curdate())+1
day) 當月第一天
, date_add(curdate()-day(curdate())+1,interval -1
month ) 上月第一天
今天select * from 表名 where to_days(時間欄位名) = to_days(now());
昨天select * from 表名 where to_days( now( ) ) - to_days( 時間欄位名) <= 1
近7天select * from 表名 where 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
#查詢本季度資料
select * from
`ht_invoice_information`
where quarter(create_date)=quarter(now());
#查詢上季度資料
select * from
`ht_invoice_information`
where quarter(create_date)=quarter(date_sub(now(),interval
1 quarter));
#查詢本年資料
select * from
`ht_invoice_information`
where
year(create_date)=year(now());
#查詢上年資料
select * from
`ht_invoice_information`
where
year(create_date)=year(date_sub(now(),interval
1year));
查詢當前這週的資料(週日到周一)
select name,submittime from enterprise where yearweek(date_format(submittime,'%y-%m-%d')) = yearweek(now());
查詢當前這週的資料(周一到週日)
錯誤(會將去年的資料也統計進去):select name,submittime from enterprise where week(date_format(submittime,'%y-%m-%d'),1) = week(now(), 1);
正確:select name,submittime from enterprise where
yearweek(date_format(submittime,'%y-%m-%d'), 1) = yearweek(now(), 1)-1;
注:此方法無法解決跨年的問題
解決跨年問題的方法:
select * from table1 where
time between date_sub(curdate(),interval weekday(curdate()) + 7
day) and date_sub(curdate(),interval weekday(curdate()) + 0
day)
查詢上週的資料(週日到周一)
select name,submittime from enterprise where yearweek(date_format(submittime,'%y-%m-%d')) = yearweek(now())-1;
查詢當前月份的資料
select name,submittime from enterprise where date_format(submittime,'%y-%m')=date_format(now(),'%y-%m')
查詢距離當前現在6個月的資料
select name,submittime from enterprise where submittime between date_sub(now(),interval
6month) and now();
查詢上個月的資料
select name,submittime from enterprise where date_format(submittime,'%y-%m')=date_format(date_sub(curdate(), interval
1month),'%y-%m')
3、查詢時間段內資料
select * from test a where a.create_date between '2017-11-13'
and'2017-11-20'
order
by a.create_date;
--包括『2017-11-13』,不包括『2017-11-20』
4、計算兩個日期的時間差函式
第一種:timestampdiff函式,需要傳入三個引數,第乙個是比較的型別,可以比較frac_second、second、 minute、 hour、 day、 week、 month、 quarter或 year幾種型別,第二個和第三個引數是待比較的兩個時間,比較是後乙個時間減前乙個時間,具體用法如下:
select timestampdiff(day,'2012-10-01','2013-01-13');
第二種方法: datediff函式,就傳入兩個日期函式,比較的day天數,第乙個引數減去第二個引數的天數值:
select datediff('2013-01-13','2012-10-01');
mysql時間函式 mysql時間相關操作
mysql 昨天 一周前 一月前 一年前的資料 這裡主要用到了date sub,參考如下 複製 如下 select from yh content where inputtime date sub curdate interval 1 day where inputtime date sub cur...
mysql相關操作 mysql 相關操作
1 登入 mysql u root p 2 檢視當前有的資料庫 show databases 3 建立資料庫 create database 資料庫名 4 操作 使用 資料庫 use 資料庫名 5 檢視有哪些表 show tables 6 建立表 create table 表名 7 刪除表 drop...
mysql 時間操作 mysql操作時間
select curdate 獲取當前日期 select last day curdate 獲取當月最後一天。select date add curdate interval day curdate 1 day 獲取本月第一天 select date add curdate day curdate ...