按变量从连接表中排序SELECT语句

时间:2016-02-01 21:09:29

标签: php sql datetime

我试图通过从数据库中的日期计算创建的变量来命令我的查询结果。

我的数据库中有一行名为“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

订购查询结果

2 个答案:

答案 0 :(得分:0)

为“DateInStock”列使用日期/时间戳数据类型会更有效。但您可以动态将其转换为日期数据类型:

create table aaa(dt varchar(30));

insert into aaa values
('2015-12-01'),('2016-01-01'),('2016-01-10'),('2016-01-20');

SQL:

select datediff(cast(dt as date), now()) as diff from aaa;

输出:

diff
-62
-31
-22
-12

这是SQLFiddle

答案 1 :(得分:0)

好的,感谢@LordBaconPants这样做了 -

mmap

这解决了db中日期的问题,但仍然需要知道如何使用计算变量对查询进行排序,以便我可以回来..谢谢大家!