【发布时间】:2016-02-01 21:09:28
【问题描述】:
我正在尝试通过从数据库中的日期计算创建的变量对我的查询结果进行排序..
我的数据库中有一行名为“DateInStock”,它是一个 VARCHAR,并像这样从 csv 文件输入 - 2015 年 9 月 9 日
$result = mysql_query("SELECT * FROM csv INNER JOIN kbb ON csv.VIN=kbb.Vin ORDER BY $numberDays DESC");
while($row = mysql_fetch_array( $result )) {
// Calculate Days in Stock
$todaydate = date("m/d/Y");
$dis = $row['DateInStock'];
$startTimeStamp = strtotime($todaydate);
$endTimeStamp = strtotime($dis);
$timeDiff = abs($endTimeStamp - $startTimeStamp);
$numberDays = $timeDiff/86400; // 86400 seconds in one day
$numberDays = intval($numberDays);
echo $numberDays;
}
所以 $numberDays 给了我它的存货天数..
echo $numberdays; // Gives me 40, 38, 30 etc.. for each iteration
我想按 $numberDays DESC 或 ASC 对查询结果进行排序
【问题讨论】:
-
你说的不正常是什么意思?另外,您能否展示一下您的输出是什么,以及您期望的输出是什么?
-
DateInStock 是 DATE 数据类型还是其他数据类型?
-
DateInStock 是从 csv 文件输入到数据库的。它在输入时已经像这样格式化了。 @David 我似乎找不到一个订单,这就是我所说的不正常的意思。它改变了订单,但似乎找不到模式。我希望它从最新到最旧的 dateInStock 输出
-
尝试将 csv.DateInStock 显式转换为 order by 中的日期。感觉 mySQL 将其视为日期以外的东西
-
很有可能。与其将其作为数据排序,不如将其作为字符串排序,这取决于您的日期格式可能非常不正常: order by STR_TO_DATE(csv.DateInStock, '%d/%m/%Y') desc