Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL未按时间正确排序_Sql_Mariadb_Sql Order By - Fatal编程技术网

SQL未按时间正确排序

SQL未按时间正确排序,sql,mariadb,sql-order-by,Sql,Mariadb,Sql Order By,一段时间后,消息不会根据时间正确显示 他们自己混合,有人能帮忙吗 我的php时间格式$time=date('d-m-Y G:i:s')正如人们在评论中所说,最好在表中有正确的数据类型。但这就是生活,如果您不是DBA,并且必须处理这个字符串数据,那么可以使用STR_to_DATE()函数 $sql = "SELECT * FROM messages WHERE (from_user = :from_user AND to_user = :to_user) OR (from_user

一段时间后,消息不会根据时间正确显示

他们自己混合,有人能帮忙吗


我的php时间格式
$time=date('d-m-Y G:i:s')

正如人们在评论中所说,最好在表中有正确的数据类型。但这就是生活,如果您不是DBA,并且必须处理这个字符串数据,那么可以使用STR_to_DATE()函数

$sql = "SELECT * FROM messages WHERE (from_user = :from_user AND to_user = :to_user) OR 
      (from_user = :fromuser   AND to_user = :touser) ORDER BY time ASC"; 

那么,时间数据库中的值是什么?你期望什么,你得到什么?如何检索此数据?数据库中时间的列定义是什么?如果它是VARCHAR并格式化为
d-m-Y G:i:s
,那么您必须将其转换为最新时间并更改格式,因为它不是MySQL可以轻松解析的格式;您应该始终使用正确的数据类型。在varchar/text列中存储时间和日期总是会使其更难使用。酷,因为PDO是一个准备好的语句,它是否可以与PDO一起使用?@Developer是的,它应该。
$sql = "SELECT * FROM messages WHERE (from_user = :from_user AND to_user = :to_user) OR (from_user = :fromuser   AND to_user = :touser) ORDER BY STR_TO_DATE(time,'%d-%m-%Y %H:%i:%s') ASC";