2014-07-24 34 views
0

我對mysql有一些麻煩,使用mysql返回2個日期之間的特定元素

我在我的數據庫中有一些存儲日期(開始和結束)的星座符號。

例如,水瓶座儲存在2001-01-20和2001-02-18之間。

所有日期開始到2000(年),當它涉及到明年是2001年

現在我有一個用戶,有過的生日。我想返回他的標誌,所以我試圖做一個請求,所以我試圖做一個請求,

例如,如果我的用戶出生'1990-12-26',我想要比較一天和一個月,所以我做了一個請求這樣

$query = "SELECT `zodiac_signs__id` , `zodiac_signs__name` , `zodiac_signs__img`, 
     RIGHT( `zodiac_signs__date_start` , 5) as date_debut , 
     RIGHT(`zodiac_signs__date_end`,5) as date_fin 
     FROM `fit__zodiac_signs` 
     WHERE '{$date_naissance}' BETWEEN RIGHT( `zodiac_signs__date_start` , 5) 
      AND RIGHT(`zodiac_signs__date_end`,5)"; 

我不明白的是,該請求不返回任何結果,

所有用戶都應該有一個標誌返回。

我很可能做了錯誤的操作日期,但我真的不知道在哪裏。

有人建議將日和月存儲在兩個不同的列中,但數據庫沒有將這些信息存儲在兩個不同的列中。

任何幫助將不勝感激。

+0

2001,那麼你可以在查詢更改出生日期至2001年。見http://stackoverflow.com/questions/16345671/sql-only-equal-to-day-and-month-not-year – Stefan

+0

不,有些跡象是在2000年,但其他一些到2001年,因爲有些跡象粉碎了這些年 –

+0

請參閱上面的鏈接尼古拉斯的答案。他僅從日期開始使用日期和月份。 – Stefan

回答

1

如果{$ date_naissance}在格式「1990年12月26日」,那麼你可能想要做的:如果每個符號存儲在一年

... WHERE '".substr($date_naissance,-5)."' BETWEEN RIGHT(... 
+0

事實上,我將日期轉換爲另一個'$ date_naissance = date('m-d',strtotime($ naissance));'但它不會返回任何預期的 –

+0

什麼sql類型是「zodiac_signs__date_end」字段?是VARCHAR(10)還是DATETIME? – lpg

+0

這是一個日期時間 –

相關問題