使用 PDO (PHP) 比较 MySQL 中的日期无法使用 YYYY-mm-dd 格式
Comparing dates in MySQL using PDO (PHP) not working using YYYY-mm-dd format
我正在尝试使用 MySQL 和 PDO PHP 从两个日期之间获取记录。
SELECT * FROM tripTable AS trip
WHERE trip.travelDate BETWEEN :startDate AND :endDate
这在使用 $_POST 日期变量 1970-01-01 时似乎不起作用 和 2099-01-01 但当我将它们转换为变量时有效 19700101 和 20990101 分别.
travelDate
存储为日期格式。
:startDate
为 1970-01-01,:endDate
为 2099-01-01
示例PHP代码
$startDate = $_POST["startdate"];
$endDate = $_POST["enddate"];
$stmt = $dbh->prepare(/*above query*/);
$stmt->bindValue(":startDate", $startDate, PDO::PARAM_STR);
$stmt->bindValue(":endDate", $endDate, PDO::PARAM_STR);
$stmt->execute();
var_dump($stmt->fetchAll(PDO::FETCH_ASSOC))
这是为什么?有什么方法可以在我的 SQL 查询中解决这个问题?
我正在使用 PhpStorm 2019.3.4 的内置查询控制台测试查询
我不确定问题出在哪里,但我在 PHPStorm 查询控制台外再次测试了它,它似乎在控制台外工作。似乎 PHPStorm 要求将 PDO 类型日期写为 YYYYmmdd ONLY
执行带参数的查询时,您需要用引号将您的值括起来。
实际执行的 SQL(您可以在 "Output" 选项卡中看到您的数据库查询控制台,请参阅第二张屏幕截图):
SELECT * FROM events
WHERE created_at >= '2019-04-25'
如果你省略它们,那么它会这样执行,这是错误的:
SELECT * FROM events
WHERE created_at >= 2019-04-25
您可能会看到使用所有 3 种方式获取了多少结果(table 有 13 行,正确的查询应该 return 只有 11 行):
我正在尝试使用 MySQL 和 PDO PHP 从两个日期之间获取记录。
SELECT * FROM tripTable AS trip
WHERE trip.travelDate BETWEEN :startDate AND :endDate
这在使用 $_POST 日期变量 1970-01-01 时似乎不起作用 和 2099-01-01 但当我将它们转换为变量时有效 19700101 和 20990101 分别.
travelDate
存储为日期格式。
:startDate
为 1970-01-01,:endDate
为 2099-01-01
示例PHP代码
$startDate = $_POST["startdate"];
$endDate = $_POST["enddate"];
$stmt = $dbh->prepare(/*above query*/);
$stmt->bindValue(":startDate", $startDate, PDO::PARAM_STR);
$stmt->bindValue(":endDate", $endDate, PDO::PARAM_STR);
$stmt->execute();
var_dump($stmt->fetchAll(PDO::FETCH_ASSOC))
这是为什么?有什么方法可以在我的 SQL 查询中解决这个问题?
我正在使用 PhpStorm 2019.3.4 的内置查询控制台测试查询
我不确定问题出在哪里,但我在 PHPStorm 查询控制台外再次测试了它,它似乎在控制台外工作。似乎 PHPStorm 要求将 PDO 类型日期写为 YYYYmmdd ONLY
执行带参数的查询时,您需要用引号将您的值括起来。
实际执行的 SQL(您可以在 "Output" 选项卡中看到您的数据库查询控制台,请参阅第二张屏幕截图):
SELECT * FROM events
WHERE created_at >= '2019-04-25'
如果你省略它们,那么它会这样执行,这是错误的:
SELECT * FROM events
WHERE created_at >= 2019-04-25
您可能会看到使用所有 3 种方式获取了多少结果(table 有 13 行,正确的查询应该 return 只有 11 行):