UNIX_TIMESTAMP与日期MySQL查询不工作

问题描述 投票:2回答:1

我存储在MySQL数据库的varchar日期。我知道这是不理想的。但它是什么我的时刻。

例如日期:

$start_date = "11/22/2019";
$start_date = strtotime($start_date);
$end_date = "11/29/2020";
$end_date = strtotime($end_date);

我想如果这个格式的日期范围落在内写检查,看看查询

我遇到问题时,开始日期具有同月为结束日期,但不同的年份。

if (!empty($start_date)) {
    $where_clause[] = "UNIX_TIMESTAMP(start_date) >= '" . $start_date . "'";
}

if (!empty($end_date)) {
    $where_clause[] = "UNIX_TIMESTAMP(end_date) <= '" . $end_date . "'";
}

我读了UNIX_TIMESTAMP会允许我这样做,但它似乎并不奏效。

我怎样才能让这个查询的工作?

php mysql unix-timestamp
1个回答
2
投票

也许在这里做最简单的事情是只使用STR_TO_DATE针对你的PHP代码正确ISO日期文字比较你的MySQL的文本日期。也就是说,使用沿着这些线路查询:

SELECT *
FROM yourTable
WHERE STR_TO_DATE(start_date, '%m/%d/%Y') > ?;

?占位符你的值绑定如date('Y-m-d', strtotime('11/22/2019'))和不'11/22/2019',其中后者是在非可使用的非ISO格式。

当你在你的问题开始提到的那样,这将是最好存放所有日期为真正的日期类型列类型,而不是文字。

© www.soinside.com 2019 - 2024. All rights reserved.