【发布时间】:2016-01-21 11:37:09
【问题描述】:
我的问题与 [this][1] 类似,但那里提供的解决方案对我不起作用。
我有一个数据库,我有一个名为birth 的列,其中包含year-day-month 00:00:00 格式的日期。现在我想从数据库中提取出生在两个日期之间的所有记录。
birth 值已使用此代码插入数据库中
$date = $day . "-" . $month. "-" . $year;
$a = strptime($date, '%d-%m-%Y');
$DB_date = date('Y-m-d H:i:s',mktime(0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900));
要提取我使用此代码的日期:
$stmt = $conn->prepare('SELECT * FROM database WHERE `birth` BETWEEN ? AND ?');
$start_date = '1990-01-01';
$stop_date = '1995-01-01';
$stmt->bind_param('ss',$start_date,$stop_date);
$stmt->execute();
$result = $stmt->get_result();
但它没有找到任何东西,所以$result->num_rows 等于0 并且它没有给出任何错误,所以问题必须在日期的比较中。
【问题讨论】:
-
你能从你的表中展示一些示例数据吗? (顺便说一句:为什么是 y-d-m 而不是 iso-standard y-m-d,它的好处是可排序且不会让人困惑?)
-
您的列出生日期是 DATETIME 类型,还是只是一个 VARCHAR 列,您以该格式存储日期?
-
@GeraldSchneider
birth的类型是date -
这与您的示例不符,您不能在 DATE 列中存储时间。
标签: php mysql mysqli prepared-statement