如何通过在某些列之间使用日期来记录

时间:2013-11-26 14:01:56

标签: php mysql

如何通过在某些列之间使用日期来获取记录

实施例。

我有一个日期值,14-11-2013。我希望我的tabel中的记录在startdate和end_date之间具有此值。我已经尝试过在声明和更大/更少之间,但没有成功。这甚至可能吗?

这是我的表格: time_periode ..当我选择*

id  start_time  start_date  end_time    end_date    payment_t.  payment_d   file_ready_d file_ready_t
11  1385337600  25-11-2013  1386460800  08-12-2013  1387238400  17-12-2013  1386892800  13-12-2013
10  1384128000  11-11-2013  1385251200  24-11-2013  1386028800  03-12-2013  1385683200  29-11-2013
9   1382918400  28-10-2013  1384041600  10-11-2013  1384819200  19-11-2013  1384473600  15-11-2013
8   1381708800  14-10-2013  1382832000  27-10-2013  1383609600  05-11-2013  1383264000  01-11-2013

期望的输出

 id  start_time  start_date  end_time    end_date    payment_t.  payment_d   file_ready_d file_ready_t
10  1384128000  11-11-2013  1385251200  24-11-2013  1386028800  03-12-2013  1385683200  29-11-2013

2 个答案:

答案 0 :(得分:1)

如果您的日期为$time_period,请使用BETWEEN

SELECT * FROM t WHERE $time_period BETWEEN start_date AND end_date

或者,您可以使用双重比较:

SELECT 
  * 
FROM 
  t 
WHERE 
  $time_period>start_date 
  AND 
  end_date>$time_period

但是,您应该使用适当的日期格式,如MySQL DATE手册页中所述。如果这不是不可能的,则有STR_TO_DATE()函数:

SELECT 
  * 
FROM 
  t 
WHERE 
  STR_TO_DATE($time_period, '%d-%m-%Y') 
    BETWEEN STR_TO_DATE(start_date, '%d-%m-%Y') 
    AND 
    BETWEEN STR_TO_DATE(end_date, '%d-%m-%Y')

答案 1 :(得分:1)

SELECT ...
FROM ...
WHERE '2013-11-14' BETWEEN start_date AND end_date

请注意日期的yyyy-mm-dd格式。这是mysql的本机日期格式,是让查询起作用的原因。看来您的start_dateend_date字段可能只是varchars,在这种情况下,此查询将失败,因为08-12-2013不是有效的mysql日期。您应始终以日期/时间格式和字段存储日期/时间。