我在这里有这个代码,它允许我检索一些日期。 我以这种方式保存今天的日期:
$time = date("d-m-Y");
我在数据库中的日期字段是varchar,它采用以下格式:d-m-Y
我如何比较它们?我用过这个但是不行!
SELECT DATE_FORMAT('date','%d-%m-%Y'), id, WHERE date>$time;
感谢您的帮助!
答案 0 :(得分:2)
如果你想通过从数据库中提取来比较日期,那么我建议你以varchar格式存储日期格式。
但现在你可以做到以下几点:
首先使用strtotime将字符串转换为unix时间戳。喜欢:
$time = strtotime( $date );
然后使用此时间戳以您想要的任何格式计算日期。要获得所需的格式,您可以这样做:
$newDate = date( 'd-m-y', $time );
答案 1 :(得分:1)
尝试在查询中使用STR_TO_DATE函数首先将VARCHAR
转换为DATETIME
值。
答案 2 :(得分:0)
您正在使用原始值构建WHERE-Clause,请尝试以下操作:
SELECT DATE_FORMAT('date','%d-%m-%Y') AS compare_date, `id` FROM `table_name` WHERE DATE_FORMAT('date','%d-%m-%Y') > $time;
请注意,这是一个字符串比较,因此最好以相反的方式进行,例如%Y-%m-%d
或者使用STR_TO_DATE
函数作为@Micah Carrick建议。
答案 3 :(得分:0)
,
之后您还有id
,并且您在查询中也需要from
子句。
SELECT DATE_FORMAT('date','%d-%m-%Y') as new_date, id from your_table WHERE new_date > $time;
答案 4 :(得分:0)
This Example Is Working 100% try Now
$exp_date = "2006-01-16";
$todays_date = date("Y-m-d");
$today = strtotime($todays_date);
$expiration_date = strtotime($exp_date);
if ($expiration_date > $today)
{
$valid = "yes";
}
else
{
$valid = "no";
}