php - MySQL 选择表列 31-12-2014 type varchar as date order by date php

标签 php html mysql date

由于设计原因,我有一个表格,其中有 3 个选择下拉菜单(日、月和年)分开 我在使用 Post (d) Post m Post (Y) 将日期保存到 mysql 之前加入日期,从表单方法后插入日期,如 $d-$m-$Y 我将日期保存在连接 d-m-Y 的 varchar 20 列中它保存得很好

日期正常显示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");

请问我如何在不改变太多的情况下解决这个问题,特别是不是我的设计

最佳答案

您走在正确的轨道上,但在定义 DATE_FORMAT 之前,您需要将 VARCHAR 转换为日期。此外,您需要以一种可以正确排序的方式格式化日期(因此仅供 ORDER BY 使用),但按存储方式显示(如果这是您想要的):

SELECT product, price, date 
FROM `tableone` 
WHERE `user` = '$usernamefromform' 
ORDER BY DATE_FORMAT(STR_TO_DATE(date, '%d-%m-%Y'), '%Y%m%d') DESC

用它构造一个 BETWEEN 查询真的很糟糕(并且可能会减慢一切),但是当您将 VARCHAR 转换为 DATE 时,您现在可以使用以下查询:

SELECT product, price, date 
FROM `tableone`
WHERE `user` = '$usernamefromform' AND (date BETWEEN '2014-01-30' AND '2014-12-31')
ORDER BY date DESC

关于php - MySQL 选择表列 31-12-2014 type varchar as date order by date php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26641880/

相关文章:

php - 如何在 PHP 中存储字符串中的变量

html - Safari 6.0.2 不调用 onaudioprocess

php - 只从我的 php 文件中的 html 数组中获取一个元素

php - Linux PHP fatal error : Call to undefined function mysqli_connect()

mysql - MAX 上的基本 SQL 更新语句

javascript - 使用 Cookie 向自己发送 POST 表单,适用于移动设备吗?

php - 在 AppEngine 上部署应用程序后无法连接 MySQL

php - 尝试找出 PHP PDO 准备好的语句和占位符。 MySQL语句的 "IN"子句中的占位符

html - css 文本对齐问题,相同的代码 2 个不同的服务器

mysql - 无法添加外键约束 1215