国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > MySQL > 正文

mysql查詢(xún)當(dāng)天,昨天,近7天,近30天,本月,上一月數(shù)據(jù)語(yǔ)句

2024-07-24 12:37:49
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

以前我在查詢(xún)數(shù)據(jù)庫(kù)今天或昨天,近7天,近30天,本月,上一月數(shù)據(jù)都是直接通過(guò)php來(lái)判斷了,這樣感覺(jué)是多一個(gè)環(huán)節(jié)了,下面我介紹一篇直接使用sql統(tǒng)計(jì)出當(dāng)天,昨天,近7天,近30天,本月,上一月數(shù)據(jù)語(yǔ)句,現(xiàn)在分享給各位.

話說(shuō)有一文章表article,存儲(chǔ)文章的添加文章的時(shí)間是add_time字段,該字段為int(5)類(lèi)型的,現(xiàn)需要查詢(xún)今天添加的文章總數(shù)并且按照時(shí)間從大到小排序,則查詢(xún)語(yǔ)句如下:

  1. select * from `article` where date_format(from_UNIXTIME(`add_time`),’%Y-%m-%d’) = date_format(now(),’%Y-%m-%d’); 

或者,代碼如下:

  1. select * from `article` where to_days(date_format(from_UNIXTIME(`add_time`),’%Y-%m-%d’)) = to_days(now()); 

假設(shè)以上表的add_time字段的存儲(chǔ)類(lèi)型是DATETIME類(lèi)型或者TIMESTAMP類(lèi)型,則查詢(xún)語(yǔ)句也可按如下寫(xiě)法:

查詢(xún)今天的信息記錄:select * from `article` where to_days(`add_time`) = to_days(now());

查詢(xún)昨天的信息記錄:select * from `article` where to_days(now()) – to_days(`add_time`) <= 1;

查詢(xún)近7天的信息記錄:select * from `article` where date_sub(curdate(), INTERVAL 7 DAY) <= date(`add_time`);

查詢(xún)近30天的信息記錄:select * from `article` where date_sub(curdate(), INTERVAL 30 DAY) <= date(`add_time`);

查詢(xún)本月的信息記錄:select * from `article` where date_format(`add_time`, ‘%Y%m’) = date_format(curdate() , ‘%Y%m’);

查詢(xún)上一月的信息記錄:select * from `article` where period_diff(date_format(now() , ‘%Y%m’) , date_format(`add_time`, ‘%Y%m’)) =1;

對(duì)上面的SQL語(yǔ)句中的幾個(gè)函數(shù)做一下分析:

1,to_days

就像它的名字一樣,它是將具體的某一個(gè)日期或時(shí)間字符串轉(zhuǎn)換到某一天所對(duì)應(yīng)的unix時(shí)間戳,代碼如下:

  1.  mysql> select  to_days(’2010-11-22 14:39:51′); 
  2.   +——————————–+ 
  3.  | to_days(’2010-11-22 14:39:51′) | 
  4.  +——————————–+ 
  5.  |                         734463 | 
  6.  +——————————–+ 
  7.   --Vevb.com 
  8.  mysql> select  to_days(’2010-11-23 14:39:51′); 
  9.  +——————————–+ 
  10.  | to_days(’2010-11-23 14:39:51′) | 
  11.  +——————————–+ 
  12.  |                         734464 | 
  13.  +——————————–+ 

可以看出22日與23日的差別就是,轉(zhuǎn)換之后的數(shù)增加了1,這個(gè)粒度的查詢(xún)是比較粗糙的,有時(shí)可能不能滿(mǎn)足我們的查詢(xún)要求,那么就需要使用細(xì)粒度的查詢(xún)方法str_to_date函數(shù)了,下面將分析這個(gè)函數(shù)的用法.

提醒:

1),to_days() 不用于陽(yáng)歷出現(xiàn)(1582)前的值,原因是當(dāng)日歷改變時(shí),遺失的日期不會(huì)被考慮在內(nèi),因此對(duì)于1582 年之前的日期,或許在其它地區(qū)為下一年,該函數(shù)的結(jié)果實(shí)不可靠的.

2),MySQL”日期和時(shí)間類(lèi)型”中的規(guī)則是將日期中的二位數(shù)年份值轉(zhuǎn)化為四位,因此對(duì)于’1997-10-07′和’97-10-07′將被視為同樣的日期,代碼如下:

  1. mysql> select to_days(’1997-10-07′), to_days(’97-10-07′);
  2. -> 729669, 729669 

2,str_to_date

這個(gè)函數(shù)可以把字符串時(shí)間完全的翻譯過(guò)來(lái),代碼如下:

  1. mysql> select str_to_date(“2010-11-23 14:39:51″,’%Y-%m-%d %H:%i:%s’); 
  2.  
  3. +——————————————————–+ 
  4. | str_to_date(“2010-11-23 14:39:51″,’%Y-%m-%d %H:%i:%s’) | 
  5. +——————————————————–+ 
  6. | 2010-11-23 14:39:51                                    | 
  7. +——————————————————–+ 

具體案例操作如下,代碼如下:

  1. select str_to_date(article.`add_time`,’%Y-%m-%d %H:%i:%s’) 
  2. from article 
  3. where str_to_date(article.`add_time`,’%Y-%m-%d %H:%i:%s’)>=’2012-06-28 08:00:00′ and str_to_date(article.`add_time`,’%Y-%m-%d %H:%i:%s’)<=’2012-06-28 09:59:59′;

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 大荔县| 平江县| 光泽县| 英吉沙县| 商南县| 兴城市| 杭锦后旗| 通道| 永吉县| 达州市| 固原市| 渭南市| 罗甸县| 正阳县| 丹东市| 共和县| 红安县| 元江| 定远县| 合川市| 海兴县| 桦川县| 江陵县| 寿光市| 驻马店市| 梓潼县| 长子县| 凌海市| 乐亭县| 洪雅县| 沂水县| 临颍县| 景东| 益阳市| 四子王旗| 黑水县| 商洛市| 耿马| 满城县| 平湖市| 阜新市|