【发布时间】:2014-12-25 20:06:36
【问题描述】:
由于设计原因,我有一个表格,其中有 3 个选择下拉菜单(日、月和年)分开 我在将日期保存到 mysql 之前使用 Post (d) Post m Post (Y) 插入日期,如 $d-$m-$Y 从表单方法 post 我将日期保存在 varchar 20 列中,加入 dmY 和很省钱
日期正常显示 30-10-2014
现在的问题是,在搜索结果页面中,我想在日期 A 到 B 之间搜索结果并获取任何内容
此外,在搜索结果中,我按日期排序,我得到的结果来自任何日期
我不知道如何使用保存在 varchar 中的这种日期来排序或过滤结果,这是我现在正在测试的内容
$result = mysqli_query($db, "SELECT product, price, DATE_FORMAT(date, '%d-%m-%Y') AS new_date FROM `tableone` WHERE `user` = '$usernamefromform' ORDER BY `new_date` DESC Limit $start, $per_page");
我怎样才能在不改变太多特别是我的设计的情况下解决这个问题
【问题讨论】:
-
将日期存储为 varchar 的错误计划。现在,当您想将数据列用作日期时,您每次都必须处理这个问题。您不必为显示而格式化它,但在其他任何事情上都做了更多的工作。这是倒退的——您将数据以结构化的 data 格式放入数据库,然后在显示时更改格式以用于显示目的。我建议您现在停止并修复您的数据库架构,而不是解决这个特定问题(可能可以使用
CAST或类似的方式完成)。