我在这里有这个代码,它允许我检索一些日期。我以这种方式保存了今天的日期:
$time = date("d-m-Y");
我在数据库中的日期字段是 varchar,格式如下:dmY
我该如何比较它们?我用过这个,但它不会工作!
SELECT DATE_FORMAT('date','%d-%m-%Y'), id, WHERE date>$time;
谢谢您的帮助!
如果您想通过从数据库中获取来比较日期,那么我建议您以日期格式而不是 varchar 格式存储。
但现在您可以执行以下操作:
首先使用 strtotime 将您的字符串转换为 unix 时间戳。喜欢 :
$time = strtotime( $date );
然后你使用这个时间戳来计算你想要的任何格式的日期。要获得所需的格式,您可以这样做:
$newDate = date( 'd-m-y', $time );
尝试在查询中使用STR_TO_DATE函数首先将其转换VARCHAR
为一个DATETIME
值。
您正在使用原始值构建 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 建议的功能。
在查询中,您有一个额外的,
afterid
并且还需要一个from
子句。
SELECT DATE_FORMAT('date','%d-%m-%Y') as new_date, id from your_table WHERE new_date > $time;
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";
}