0

我在“按日期时间订购”时遇到问题。我有一个正在访问我们的数据库的 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;

我正在做一个“加入”,以便我可以获得与用户相关的所有数据。用户有一个通行证列表。这些通行证有位置2。我正在尝试从分配给用户的所有通行证中获取所有“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

对此的任何帮助将不胜感激。谢谢大家。

4

3 回答 3

0

尝试:

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
于 2013-06-03T02:28:38.473 回答
0

你能试试这个吗

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 )

也试试这个

我使用了使用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
于 2013-06-03T07:06:12.713 回答
0

只需按 date_time 字段排序。仅出于显示目的转换为字符串。

于 2013-06-03T02:03:12.863 回答