簡體   English   中英

通過變量從連接表中訂購SELECT語句

[英]Order SELECT Statement from joined tables by variable

我正在嘗試通過從數據庫中的日期計算創建的變量對查詢結果進行排序。

我的數據庫中有一行名為“ DateInStock”的行,該行是VARCHAR,是從csv文件中輸入的,就像這樣-9/9/2015

$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”列中使用日期/時間戳數據類型會更有效。 但是您可以即時將其轉換為日期數據類型:

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

好吧,感謝@LordBaconPants做到了-

$result = mysql_query("SELECT * FROM csv INNER JOIN kbb ON csv.VIN=kbb.Vin ORDER BY STR_TO_DATE(DateInStock, '%m/%d/%Y') DESC ");

這解決了數據庫中日期的問題,但仍然需要知道如何使用計算出的變量對查詢進行排序,因此我可能會回來..謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM