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


how can i get record out by using date between certain columns

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

示例。

我有一个日期值,2013年11月14日。我希望在我的选项卡中的记录具有介于startdate和end_date之间的值。我试过在语句和大/小之间使用,但没有成功。这可能吗?

这是我的表格:时间段。。当我选择*时

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

如果您的日期是$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')
SELECT ...
FROM ...
WHERE '2013-11-14' BETWEEN start_date AND end_date

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