2013-11-26 19 views
0

我怎样才能获得通过我怎样才能使用某些列之间的日期记录了

例如,某些列之间的最新纪录了。

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

这是我TABEL: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 
+0

日期应该使用日期数据类型 – Strawberry

回答

1

如果你的日期是$time_period,然后用BETWEEN

SELECT * FROM t WHERE $time_period BETWEEN start_date AND end_date 

或者,您可以使用double -comparison:

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') 
+0

存储我将在8分钟内接受..感谢您的正确答案:D – Zaz

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日期。您应该始终以本地日期/时间格式和字段存储日期/时间。

+0

感谢您的正确答案:D – Zaz

相关问题