【发布时间】:2018-10-01 21:22:06
【问题描述】:
我的 mysql 数据库中有一个 VARCHAR 列,它用逗号而不是连字符存储日期。
我想通过将这些日期与当前日期进行比较来获取一些数据。为了获取当前日期,我使用 php5 方法 date("Y,m,d"); 并将其声明为 $date;
如果当前日期小于给定行的日期,那么我想检索它,否则从结果集中忽略它。
这是我的代码
$date=date("Y,m,d"); //current date to check if expiry date is valid or not
try {
$conn = new PDO("mysql:host=******;dbname=******", $username, "******");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query = "select id, discount, expirydate, description, logouploader from table WHERE expirydate>= ? LIMIT 10";
$statement = $conn->prepare($query);
$statement->execute(array($date));
foreach($statement->fetchAll(PDO::FETCH_ASSOC) as $row) {
echo $row['expirydate'];
}
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
$conn = null;
我的代码不比较日期;即使它应该留下小于$date;//当前日期的记录,它也会获取所有行
如何过滤我的结果集以仅返回尚未过期的行?
【问题讨论】:
-
你服务器上日期的格式是什么
-
我将其存储为 varchar,格式为 YYYYMMDD,例如 2018,04,15
-
你的数据库中有逗号吗?
-
是的,我的逗号与“Y,m,d”相同,例如 2018,04,27(示例)
-
在使用
date()之前尝试定义时区:php.net/manual/en/function.date-default-timezone-set.php
标签: php mysql date filtering date-formatting