2012-10-11 39 views
0

我有一個在我的數據庫中的添加表,我定義了一個字段日期,每個記錄有一個類型的varchar和日期格式的srores日期。我現在使用插入日期字段值()函數和我的日期字段格式值從日期字段在varchar中的數據庫匹配提取記錄

2012年10月7日14時00分54秒

我想獲取通過匹配記錄今天,昨天,上週和上個月的日期,但我不知道如何做到這一點。我搜索的谷歌了很多,我嘗試了許多功能,但它不工作我運行下面的查詢

select * from adds where date(date_sub(now(), interval 0 day)) 
    select * from adds where date(date_sub(now(), interval 1 day)) 
    select * from adds where date(date_sub(now(), interval 7 day)) 
    select * from adds where date(date_sub(now(), interval 31 day)) 

所有這些都沒有工作,我也嘗試

select * from adds where date=curdate() 
    select * from adds where date=current_date() 

請指導我如何可以獲取記錄。 我使用本地主機服務器XAMPP win32的1.7.7

+1

可以解決這個問題,但使用適當的DATETIME字段會更好。爲什麼你不能使它成爲DATETIME字段? –

+0

我的老師對我說使用varcher代替日期時間類型 – aqsa

+0

可以通過使用varchar來匹配日期嗎? – aqsa

回答

0

我想獲取今天的日期,昨天,最後 一週,上個月匹配的記錄,但我不知道如何做到這一點。

然後,你需要SELECT那些記錄日期爲界限之間:

SELECT * FROM adds WHERE `date` 
     BETWEEN 
      DATE(DATE_SUB(NOW(), INTERVAL 7 DAY)) 
     AND DATE(DATE_SUB(NOW(), INTERVAL 0 DAY)) 
; 

以上應該給你上週在今天開始在00:00結束。

注意:如果varchar日期語法與MySQL相同,則上述方法可行。如果不是,則需要明確指示MySQL作爲如何解析它:

WHERE STR_TO_DATE(`date`,'%Y:%d:%m %H:%i:%s') BETWEEN.. 

的日期格式語法見date_format()

+0

SELECT * FROM地方添加'date' 之間 DATE(DATE_SUB(NOW(),區間7日)) 和日期(DATE_SUB(NOW(),INTERVAL 0天)) – aqsa

+0

這個查詢工作,但只顯示的記錄上週不包括今天plz告訴我如何獲取今天和上個月的記錄我編輯上述查詢間隔7至30,但它不顯示我最近幾個月的記錄 – aqsa

+0

對不起,我錯了上述查詢是獲取記錄上個月和上週,但不是今天,因爲你說「在今天00:00開始結束。」我想要今天的記錄直到24:00結束 – aqsa

相關問題