从mysql php获取日期值

时间:2015-11-10 13:52:21

标签: php mysql date datetime

我正在使用旅行软件,我必须检索特定日期的酒店房价。酒店日期是在三个月(2015年1月9日至2015年12月31日)之间添加的。我的数据库有两列开始日期和结束日期都是varchar类型。日期格式是mm / dd / yyyy。我必须检索单个日期的值(11/25/2015)。目前我正在使用的查询是

SELECT * 
FROM tbl_roomtype 
where `room_id`='17' 
  and roomoccupancy='Double' 
  AND startdate<='11/25/2015' 
  and enddate >='11/25/2015'

查询效果不佳。所以任何人都可以提出解决方案。

2 个答案:

答案 0 :(得分:2)

您需要使用str_to_date(str_to_date)。 试试这个:

SELECT * 
FROM tbl_roomtype 
where `room_id`='17' 
  and roomoccupancy='Double' 
  AND STR_TO_DATE(startdate,'%m/%d/%Y')<=STR_TO_DATE('11/25/2015' ,'%m/%d/%Y')
  and STR_TO_DATE(enddate,'%m/%d/%Y') >=STR_TO_DATE('11/25/2015' ,'%m/%d/%Y')

答案 1 :(得分:1)

您必须将字符串解析为有效日期。要进行过滤,您必须使用“YYYY-MM-DD”格式的字符串。

SELECT
    *
FROM
    `tbl_roomtype`
WHERE
    `room_id` = '17' 
    AND `roomoccupancy` = 'Double' 
    AND STR_TO_DATE(`startdate`, '%m/%d/%Y') <= '2015-11-25' 
    AND STR_TO_DATE(`enddate`, '%m/%d/%Y') >= '2015-11-25'

或(如果您无法修复过滤器:

SELECT
    *
FROM
    `tbl_roomtype`
WHERE
    `room_id` = '17' 
    AND `roomoccupancy` = 'Double' 
    AND STR_TO_DATE(`startdate`, '%m/%d/%Y') <= STR_TO_DATE('11/25/2015', '%m/%d/%Y') 
    AND STR_TO_DATE(`enddate`, '%m/%d/%Y') >= STR_TO_DATE('11/25/2015', '%m/%d/%Y')