#mysql關於查詢時間的語法
#獲取當前日期和時間的函數。2020-05-08 16:42:36
select NOW();
#獲取當前的日期 2020-05-08
select CURDATE();
#獲取當前時間 16:42:23
SELECT CURTIME();
# 2020-05-08
SELECT DATE(now()) from now();
SELECT DATE(create_time) from 表名 limit 1;
#獲取返回日期/時間的單獨部分,比如年、月、日、小時、分鐘等等。
select EXTRACT(YEAR_MONTH FROM now()) ;
SELECT EXTRACT(YEAR_MONTH from create_time) from 表名 limit 1;
#DATE_ADD將日期添加指定的時間間隔。 2020-05-09 16:57:24
select DATE_ADD(now(),INTERVAL 1 DAY) ;
#DATE_SUB 將日期減去指定的時間間隔。 2020-05-07 16:58:02
select DATE_SUB(now(),INTERVAL 1 DAY) ;
#DATEDIFF 獲取兩個日期之間的天數。(只有日期部分參與計算
SELECT DATEDIFF(NOW(),'2020-04-08')
#DATEFORMAT 格式化日期時間 2020-05-08
SELECT DATE_FORMAT(now(),'%Y-%m-%d')
#1,查詢今天的繪本
select create_time from 表名 where TO_DAYS(NOW())=TO_DAYS(create_time);
select create_time from 表名 where DATE_FORMAT(CURDATE(),'%Y-%m-%d')=DATE_FORMAT(create_time,'%Y-%m-%d')
#2,昨天
select create_time from 表名 where TO_DAYS(NOW())-1=TO_DAYS(create_time);
#3,昨天以後的數據
select create_time from 表名 where TO_DAYS(NOW())-TO_DAYS(create_time)<=1;
#4,近7天
select create_time from 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(create_time);
#5,最近一個月
select create_time from 表名 where DATE_SUB(CURDATE(), INTERVAL 1 MONTH) <= date(create_time);
#最近一個月,下午1點到2點的繪本出現top10次數
select * from 表名 where DATE_SUB(CURDATE(), INTERVAL 1 MONTH) <= date(create_time) and DATE_FORMAT(create_time,'%H-%i-%s')>='12:00:00' and DATE_FORMAT(create_time,'%H-%i-%s')<='13:00:00' GROUP BY book_id ORDER BY count(book_id) desc ;
#近30天
select create_time from 表名 where DATE_SUB(CURDATE(),INTERVAL 30 DAY)<=DATE(create_time);
#本月
select create_time from 表名 where MONTH(create_time)=MONTH(CURDATE());
select create_time from 表名 where DATE_FORMAT(CURDATE(),'%m')=DATE_FORMAT(create_time,'%m')
#上一月
select create_time from 表名 where MONTH(create_time)=MONTH(CURDATE())-1;
select create_time from 表名 where DATE_FORMAT(CURDATE(), '%Y%m')-1=DATE_FORMAT(create_time,'%Y%m')
SELECT create_time FROM 表名 WHERE PERIOD_DIFF(DATE_FORMAT(CURDATE( ),'%Y%m' ),DATE_FORMAT(create_time,'%Y%m' )) =1;
#查詢本季度數據
select create_time from 表名 where QUARTER(create_time)=QUARTER(CURDATE());
#查詢上季度數據
select create_time from 表名 where QUARTER(create_time)=QUARTER(CURDATE())-1;
select create_time from 表名 where QUARTER(create_time)=QUARTER(date_sub(CURDATE(),INTERVAL 1 quarter));
#查詢本年數據
select create_time from 表名 where YEAR(create_time)=YEAR(CURDATE());
#查詢上年數據
select create_time from 表名 where YEAR(create_time)=YEAR(CURDATE())-1;
select create_time from 表名 where YEAR(create_time)=YEAR(date_sub(CURDATE(),INTERVAL 1 YEAR));
#查詢當前這周的數據
select create_time from 表名 where WEEK(create_time)=WEEK(CURDATE());
#查詢上週的數據
select create_time from 表名 where WEEK(create_time)=WEEK(CURDATE())-1;
select create_time from 表名 where WEEK(create_time)=WEEK(date_sub(CURDATE(),INTERVAL 1 WEEK));
%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 位
時間間隔
MICROSECOND、
SECOND、MINUTE、
HOUR、DAY、WEEK、MONTH、
QUARTER、YEAR、SECOND_MICROSECOND、
MINUTE_MICROSECOND、MINUTE_SECOND、
HOUR_MICROSECOND、HOUR_SECOND、
HOUR_MINUTE、DAY_MICROSECOND、
DAY_SECOND、DAY_MINUTE、
DAY_HOUR、YEAR_MONTH