2014-07-24 35 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

这是一个日期时间 –

相关问题