如何通过在某些列之间使用日期来获取记录
实施例。
我有一个日期值,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
答案 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_date
和end_date
字段可能只是varchars,在这种情况下,此查询将失败,因为08-12-2013
不是有效的mysql日期。您应始终以日期/时间格式和字段存储日期/时间。