我正在使用数据表。我正在使用以下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>
答案 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