明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

怎么完成日期比較,暨完成顯示5天內(nèi),顯示10天內(nèi)的記錄

[摘要]前幾天發(fā)了一張?zhí),就是關(guān)于顯示5天內(nèi)這種日期比較, http://www.oso.com.cn/forum/read.php?theme_id=7459 主要的論點(diǎn)是集中在SELECT somet...

前幾天發(fā)了一張?zhí)樱褪顷P(guān)于顯示5天內(nèi)這種日期比較,

http://www.oso.com.cn/forum/read.php?theme_id=7459

主要的論點(diǎn)是集中在SELECT something FROM table
WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 5; 上,我試驗(yàn)了半天,結(jié)果還是出錯(cuò),今天看了MYSQL的函數(shù),終于出來了結(jié)果,不敢獨(dú)享,貼出來供大家研究,(雖然技術(shù)含量不高,別扔我柿子就行,呵呵)

MYSQL的TO_DAYS(DATE)函數(shù)是這樣說明的:
傳回DATE到公元0年的總?cè)諗?shù),我測(cè)試了一下
mysql>select to_days(now(0));
+--------------------------+
TO_DAYS(NOW())
+--------------------------+
730839
+--------------------------+

出來的是當(dāng)前時(shí)間距離公元0年的總?cè)諗?shù),接著我試著用上面的語句測(cè)試;

mysql>select TO_DAYS(NOW()) - TO_DAYS(date_col) <= 5;
出現(xiàn)結(jié)果:
ERROR 1054:Unknown column 'date_col' in 'field first'

此路不通了,我就試著直接把5代到date_col里去

mysql>select to_days(now()) - to_days(5);
出現(xiàn)結(jié)果:
+---------------------------+
to_days(now()) - to_days(5)
+---------------------------+
NULL
+---------------------------+

?不會(huì)吧?這樣也不行?
我接著試命令
mysql>select 。。。。

突然猛的想到,嘿嘿,to_days(now())出來的是整數(shù),我直接跟整數(shù)運(yùn)算就行了,何必再to_days(date)呢?馬上試驗(yàn)

mysql>select to_days(now()) - 5;
+--------------------------+
to_days(now()) -5
+--------------------------+
730834
+--------------------------+


OK,萬歲,終于得到了我想要的結(jié)果,呵呵 下面就是在PHP代碼中用SELECT 查詢了

我存數(shù)據(jù)庫向來的習(xí)慣就是DATEANDTIME用NOW()直接賦值,顯示的時(shí)候不用格式化,直接取出來就能用,

下面是我的一個(gè)庫的部分結(jié)構(gòu)
CREATE TABLE infomess (
infoid int(11) NOT NULL auto_increment,
topic varchar(255) NOT NULL,
……
email varchar(50),
dateandtime datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
PRIMARY KEY (infoid)
);


這里的DATEANDTIME是標(biāo)準(zhǔn)的日期格式,然后我要查詢5天內(nèi)的記錄,下面是SQL查詢語句
$sql="select * from infomess where to_days(dateandtime) >= (to_days(now()) - 5) order by infoid desc limit $offset,$psize";

就要一個(gè)where to_days(dateandtime) >= (to_days(now()) - 5)就夠了 后面的是另外的,這里的5可以設(shè)為一個(gè)變量

where to_days(dateandtime) >= (to_days(now()) - $limitdays)

然后$limitdays可以用GET方式傳遞(多數(shù)是有GET方式傳遞)

在你的PHP后面跟上?limitdays=5就行了 顯示10天內(nèi)也一樣,$limitdasy改成10就行了

以上是利用MYSQL函數(shù)得到這樣的結(jié)果,以上的結(jié)果都經(jīng)過測(cè)試,因?yàn)闀r(shí)間匆忙,如果代碼有什么問題,請(qǐng)跟帖提出,謝謝


還有朋友說利用UNIX戳記來得到這樣的結(jié)果,請(qǐng)問哪位寫過這樣的代碼,貼點(diǎn)出來,供大家參考比較,也可以測(cè)試判斷一下PHP函數(shù)還是MYSQL函數(shù)實(shí)現(xiàn)的效率高