程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql中獲得一天、一周、一月時光數據的各類sql語句寫法

mysql中獲得一天、一周、一月時光數據的各類sql語句寫法

編輯:MySQL綜合教程

mysql中獲得一天、一周、一月時光數據的各類sql語句寫法。本站提示廣大學習愛好者:(mysql中獲得一天、一周、一月時光數據的各類sql語句寫法)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql中獲得一天、一周、一月時光數據的各類sql語句寫法正文


創立表:


create table if not exists t
(
   id int,
   addTime datetime default '0000-00-00 00:00:00′
)

添加兩條初始數據:

insert t values(1, '2012-07-12 21:00:00′);
insert t values(2, '2012-07-22 21:00:00′);

1、當天或當日拔出的數據:

1、傳統比較斷定:SELECT * FROM `t` WHERE DATE_FORMAT(addTime,'%Y-%m-%d') = date_format(now(),'%Y-%m-%d')");
2、第一點的簡寫:SELECT * FROM `t` WHERE addTime >= date_format(NOW(),'%Y-%m-%d');
3、應用函數斷定:SELECT * FROM `t` WHERE DATEDIFF(addTime,NOW()) =0;//推舉此辦法
4、應用時光戳斷定:SELECT * FROM `t` WHERE addTime BETWEEN (UNIX_TIMESTAMP(now()-86440)) AND now();
注:前往當地利間的mysql函數有CURDATE()、CURRENT_DATE()、CURRENT_DATE、NOW()幾種;個中NOW()獲得的日期格局為0000-00-00 00:00:00的時光;CURDATE()、CURRENT_DATE()、CURRENT_DATE是獲得日期格局為0000-00-00的時光,所以前往的時光無時分秒;

2、當月的相干數據寫法:

1、明天是當月的第幾天:SELECT DAYOFMONTH( NOW( ) );
2、獲得當月的第一地利間:SELECT DATA_SUB( NOW(), INTERVAL DAYOFMONTH(NOW()) – 1 DAY);
日期運算函數,句型:date_add(date,INTERVAL expr type)和date_sub(date,INTERVAL expr type)
date為一個datetime或date值,可看成肇端時光,expr為一個表達式,用來指定增長或削減的時光距離數量,可為一個字符串–若為負值,則在表達式前加個"-"符號。type為症結詞,它表現了表達式被說明的方法,平日用年(year)、月(month)、日(day)、周(week)等。
INTERVAL的用戶解釋:

1、當函數應用時,即INTERVAL(),為比擬函數,如:INTERVAL(10,1,3,5,7); 成果為4;
道理:10為被比擬數,前面1,3,5,7為比擬數,將前面四個順次與10比擬,看前面數字組有若干個少於10,則前往其個數。條件是前面數字組為從小到年夜分列,不然前往成果0。
2、當症結詞應用時,表現為設置時光距離,經常使用在date_add()與date_sub()函數裡,如:INTERVAL 1 DAY ,說明為將時光距離設置為1天。

弄清晰了下面幾個主要的日期運算函數,上面再來一個混雜的日期運算。
3、上個月的第一地利間:SELECT DATE_SUB( DATE_SUB( NOW( ) , INTERVAL DAYOFMONTH( NOW( ) ) -1 DAY ) , INTERVAL 1 MONTH ); 是否是了如指掌了!

3、當周的相干數據寫法:

1、獲得明天是一周第幾天或禮拜幾:SELECT WEEKDAY(now());前往的是數字:0為周一,6為周日
2、獲得本周的第一天日期:SELECT DATE_SUB(now(),INTERVAL WEEKDAY(now()) day);或SELECT DATE_ADD(now(),INTERVAL -WEEKDAY(now()) day);或 SELECT CURDATE( ) – WEEKDAY( CURDATE( ) );
3、再寫一個上周的第一天至如今的數據:(以表t為數據表)
SELECT * FROM `t` WHERE addTime >= date_format(date_sub(date_sub(now(), INTERVAL WEEKDAY(NOW()) DAY), INTERVAL 1 WEEK), ‘%Y-%m-%d');是否是有些感到了!

注:若你是以時光戳保留的時光字段,那末請用from_unixtime()函數轉換為時光格局,如:from_unixtime($timestamp)

4、Mysql中將日期轉為時光戳

前三點的辦法,講的都是將日期轉為響應時光常量,並沒有提到時光戳與時光的轉換,這裡把它寫出來,

1、時光戳轉日期,辦法是select from_unixtime(1336542121);
2、日期轉時光戳,辦法是:select unix_timestamp('2013-04-08′);

聯合後面3點,關於時光戳就更能靈巧應用了!最初更新於:2013.04.08

mysql查詢 昨天 一周前 一月前 一年前的數據

mysql 昨天 一周前 一月前 一年前的數據 這裡重要用到了DATE_SUB,

參考以下


SELECT * FROM yh_content
where inputtime>DATE_SUB(CURDATE(), INTERVAL 1 DAY)
where inputtime>DATE_SUB(CURDATE(), INTERVAL 1 WEEK)
where inputtime>DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
where inputtime>DATE_SUB(CURDATE(), INTERVAL 1 YEAR)

留意:假如數據庫中時光以UNIX時光戳的情勢寄存的話,在時光比較上須要更改成同一格局:

DATE_SUB()前往的是格局化後的時光:2014-05-17

須要用UNIX_TIMESTAMP()轉化為UNIX時光戳情勢比較:


where inputtime>UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 DAY))
where inputtime>UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 WEEK))
where inputtime>UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))
where inputtime>UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 YEAR))

具體請檢查MySql時光函數:DATE_SUB、DATE_ADD、UNIX_TIMESTAMP等函數的用法

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved