我有一个自定义日期(动态构建/输入),就像'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语句中直接解决这个问题?
答案 0 :(得分:6)
答案 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')
答案 7 :(得分:0)