如何使用自定义日期进行选择

时间:2013-07-30 07:42:47

标签: php mysql sql select

我有一个自定义日期(动态构建/输入),就像'2013-5-13'一样 但我的mysql数据库存储为'2013-05-13'
所以我试图像

那样检索它
SELECT * FROM TBL WHERE XDATE='2013-5-13' >>> it return me ZERO result

SELECT * FROM TBL WHERE XDATE='2013-05-13' >>> it return me CORRECT result

那么如何在mysql语句中直接解决这个问题?

8 个答案:

答案 0 :(得分:6)

DATE_FORMAT

中使用此%c
     select *  from TBL WHERE DATE_FORMAT(`XDATE`,'%Y-%c-%d') = '2013-5-13'

DEMO HERE

答案 1 :(得分:2)

使用DATE_FORMAT

DATE_FORMAT(`XDATE`,'%Y-%c-%d')

查询

SELECT * FROM TBL WHERE DATE_FORMAT(`XDATE`, '%Y-%c-%d') = '2013-5-13'

MySql DATE_FORMAT Documentation

%c  Month, numeric (0..12)

答案 2 :(得分:1)

在查询数据库之前,只需使用strtotime()正确设置...

 $date = "2013-5-16";
 $date = date("Y-m-d",strtotime($date));

 $sql = "SELECT * FROM TBL WHERE XDATE='".$date."'";

答案 3 :(得分:1)

使用此查询: -

SELECT * FROM TBL WHERE UNIX_TIMESTAMP(XDATE)=strtotime('2013-5-13')

答案 4 :(得分:0)

使用strtotime函数转换两个日期,然后检查。

答案 5 :(得分:0)

只有当您的输入始终采用“年 - 月 - 日”格式时,此答案才有效

$date = '2013-5-13';
$parts = explode('-', $date);
$year = $parts[0];
$month = $parts[1];
$day = $parts[2];
//i assume that $year is always valid. Possible checks are left to the reader
//(lol i've always dreamed to write that sentence somewhere)
$month = str_pad($month, 2, "0", STR_PAD_RIGHT);
$day = str_pad($day, 2, "0", STR_PAD_RIGHT);

$clean_date = "$year-$month-$date"; //note the quotes

现在,您可以在查询中使用$clean_date

答案 6 :(得分:0)

您可以格式化日期:

SELECT DATE_FORMAT('2013-5-13', '%Y-%m-%d');
WHERE部分中的

SELECT * FROM TBL WHERE XDATE=DATE_FORMAT('2013-5-13', '%Y-%m-%d')

MySQL docs

答案 7 :(得分:0)

我认为最干净的方法是使用MySQL DATE()函数:

SELECT * FROM TABLE WHERE DATE(date_col) = DATE("2013-5-01")

MySQL docs