簡體   English   中英

MySQL-ORDER BY STR_TO_DATE不起作用

[英]MySQL - ORDER BY STR_TO_DATE not working

我試圖用PHP和MySql運行PDO查詢,然后按日期對它進行排序。

我的查詢如下:

    $query_params = array( 
        ':website' => $site
    );

    $query = " 
        SELECT 
            DATE_FORMAT(date, '%d/%m/%Y') AS date,
            id
        FROM
            items as bi
        INNER JOIN 
            basket as bb ON bi.item_number=bb.basket_item
        INNER JOIN
            orders as bo ON bb.basket_order=bo.order_number 
        WHERE
            bi.website = :website
        ORDER BY 
            STR_TO_DATE(date,'%d/%m/%Y') DESC
    "; 

    try { 
        $stmt = DB::get()->prepare($query); 
        $stmt->execute($query_params); 
        $rows = $stmt->fetchAll();
    } 
    catch(PDOException $ex) {} 

    foreach($rows as $row):
        $output .= "".$row["date"].",";
        $output .= "".$row["id"].",";
        $output .= "\r\n <br />";
    endforeach;

我的輸出應為:

13/06/2014, 8676,
12/06/2014, 5765,
12/04/2014, 7683, 
08/12/2013, 1098, 
06/12/2013, 2003, 
06/12/2013, 6755,

它似乎沒有按任何東西排序:

12/06/2014, 5765,
12/04/2014, 7683, 
13/06/2014, 8676, 
06/12/2013, 2003, 
06/12/2013, 6755, 
08/12/2013, 1098,

STR_TO_DATE(date,'%d/%m/%Y') DESC是否STR_TO_DATE(date,'%d/%m/%Y') DESC預期排序?

您的表中已經有一個可愛的date列-為什么在地球上嘗試基於此格式的字符串進行排序?

    SELECT 
        DATE_FORMAT(date, '%d/%m/%Y') AS date,
        id
    FROM
        items as bi
    INNER JOIN 
        basket as bb ON bi.item_number=bb.basket_item
    INNER JOIN
        orders as bo ON bb.basket_order=bo.order_number 
    WHERE
        bi.website = :website
    ORDER BY 
        date DESC

當然,您可以根據自己的喜好格式化輸出給用戶的日期-但是,您不僅要格式化數據庫的每一行,還需要格式化每一行數據,然后按照本來可以由數據庫本地完成的方式進行排序。

編輯:有趣。 我想知道date是否是半保留字這一事實是否導致您的排序未按預期進行?

也許試試這個:

    ORDER BY 
        bo.date DESC

嘗試這個

$query = " 
    SELECT 
        DATE_FORMAT(date, '%d/%m/%Y') AS date,
        id
    FROM
        items as bi
    INNER JOIN 
        basket as bb ON bi.item_number=bb.basket_item
    INNER JOIN
        orders as bo ON bb.basket_order=bo.order_number 
    WHERE
        bi.website = :website
    ORDER BY 
        date DESC
"; 

暫無
暫無

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

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