[英]PHP/SQL order by date_time. order by Year not month mm/dd/yyyy
我在“按date_time排序”时遇到了麻烦。 我有一个正在访问我们数据库的php页面。 我有一个可以在表格中显示数据的函数。 sql语句如下:
SELECT date_time
, pass_no
, location2
from usr_vftcapstone_0.vftPasses as P, Scans as S
where P.user_name='terak' and S.details2=P.`pass_no` order by S.date_time;
我正在执行“联接”,以便获取与用户有关的所有数据。 用户具有通行证列表。 这些通行证有location2。 我正在尝试从分配给用户的所有通行证中获取所有“ location2”条目。
我努力了:
order by convert(datetime, date_time, 103) ASC
style 103 = dd/MM/yyyy (msdn)
为此,我不知道在哪里包含“ 103型”。 我在同一sql语句中的“ ASC”之后尝试了此方法,但是我不认为这是如何工作的。
我的输出按降序排列,但按月排序。 我需要按年订购。
date_time字段显示如下: 1/01/2013 10:30:51
任何帮助,将不胜感激。 谢谢大家。
只需按date_time字段排序即可。 仅转换为用于显示目的的字符串。
尝试:
ORDER BY STR_TO_DATE(date_time, '%d/%m/%Y %H:%i:%s')
样式号用于SQL Server,但您的查询看起来像MySQL。
如果您的日期可以采用不同的格式(这是什么样的数据库?),则可以执行以下操作:
ORDER BY CASE WHEN date_time LIKE '%/%/% %:%:%'
THEN STR_TO_DATE(date_time, '%d/%m/%Y %H:%i:%s')
WHEN date_time LIKE '%/%/% %:%'
THEN STR_TO_DATE(date_time, '%d/%m/%Y %H:%i')
END
你可以尝试一下吗
SELECT date_time
, pass_no
, location2
from usr_vftcapstone_0.vftPasses as P, Scans as S
where P.user_name='terak' and S.details2=P.`pass_no`
order by SUBSTRING(S.date_time,7,4) ASC
我从这里用过的
SUBSTRING ( expression ,start , length )
也试试这个
我已使用Use DATEPART(Transact-SQL)提取年份。
SELECT date_time
, pass_no
, location2
from usr_vftcapstone_0.vftPasses as P, Scans as S
where P.user_name='terak' and S.details2=P.`pass_no` order by
datePart(yy, convert(datetime, S.date_time, 103)) ASC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.