MySQL选择两个日期之间的所有日期

时间:2013-05-30 22:38:08

标签: php mysql

我有一个名为scheduleles的表,其中包含日,月,年等列。我需要的是选择$ datefrom和$ dateto之间的记录。这是我的代码不起作用:(

SELECT * FROM schedules WHERE CONCAT(year, month, day) BETWEEN $datefrom AND $dateto

我不确定这是否正确。请帮忙。

1 个答案:

答案 0 :(得分:1)

就像showdev已经在评论中说的那样,你必须将从CONCAT()函数返回的字符串转换为日期。但请注意,没有索引可用于此。

我建议您在表格中使用完整日期创建一个额外的列。我不知道你是否因为性能原因将日期分为3列,但如果只有一列足以让你试一试。通常它足够快(索引时)。

如果您不想这样做并且想要使用索引(如果它们在这3列中完全存在),您将不得不像这样编写查询:

SELECT * FROM schedules WHERE 
`year` BETWEEN YEAR($datefrom) AND YEAR($dateto)
AND `month` BETWEEN MONTH($datefrom) AND MONTH($dateto)
AND `day` BETWEEN DAY($datefrom) AND DAY($dateto)