数据表列出排序顺序的问题

时间:2016-10-25 12:27:37

标签: php mysql sorting datatable

我正在使用数据表。我正在使用以下mysql查询

$sql="select * from table ORDER BY STR_TO_DATE(  `pdate` ,  '%d/%m/%Y' ) desc";

但是这个ORDER BY日期不起作用。它没有按照pdate desc的顺序列出数据。它随机列出数据

pdate以“29/09/2016”格式存储在表格中

当我在数据库表中运行此查询时,它正确列出但在数据表排序顺序不正确。它是按数据表列表中第一列的升序列出

sql query
CREATE TABLE IF NOT EXISTS `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `pdate` varchar(10) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

--
-- Dumping data for table `test`
--

INSERT INTO `test` (`id`, `name`, `pdate`) VALUES
(1, 'a', '29/09/2016'),
(2, 'b', '29/09/2015'),
(3, 'c', '29/02/2016'),
(4, 'd', '22/05/2016'),
(5, 'e', '27/06/2015');

表格显示

    <script src="jstables/jquery-1.12.3.js"></script>
<script src="jstables/jquery.dataTables.min.js"></script>
<script src="jstables/dataTables.buttons.min.js"></script>
<script src="jstables/buttons.flash.js"></script>
<script src="jstables/jszip.js"></script>
<script src="jstables/pdfmake.js"></script>
<script src="jstables/vfs_fonts.js"></script>
<script src="jstables/buttons.html5.js"></script>
<script src="jstables/buttons.print.js"></script>
<link rel="stylesheet" href="csstables/jquery.dataTables.css" />
<link rel="stylesheet" href="csstables/buttons.dataTables.css" />
$querystring="select * from test ORDER BY STR_TO_DATE(  `pdate` ,  '%d/%m/%Y' ) desc";
$sql=mysql_query($querystring);
<table id="example" border="1" class="display nowrap" cellspacing="0" width="100%"><thead>
<tr><th>aws</th><th>dd</th></tr></thead><tbody>
<?php
while($res=mysql_fetch_array($sql)){ 
?>
<tr><td><?php echo $res['name'];?></td><td><?php echo $res['pdate'];?></td></tr>
<?php
}
?>
</tbody>
</table>
<script type="text/javascript">
    $(document).ready(function() {
    $('#example').DataTable( {

        dom: 'Bfrtip',
        buttons: [
            'copy', 'csv', 'excel', 'pdf', 'print'
        ]
    } );
} );
    </script>

3 个答案:

答案 0 :(得分:1)

尝试在数据表上的dom代码之后添加order参数,如下所示:

$('#table').DataTable({
    "order": [[2, "desc"]] //"2" is my date array position
    .......
});

答案 1 :(得分:0)

试试这个:

$sql="select * from table where name='$name' ORDER BY `pdate` desc";

答案 2 :(得分:0)

您将日期存储在varchar数据类型列中。

因此,当您按顺序进行订购时,它将视为文本而不是日期。

你需要输入那个

select * from table ORDER BY CAST(`pdate` AS DATE) desc

参考 https://dev.mysql.com/doc/refman/5.5/en/cast-functions.html