【问题标题】:PHP/SQL order by date_time. order by Year not month mm/dd/yyyyPHP/SQL 按日期时间排序。按年而不是月 mm/dd/yyyy 排序
【发布时间】:2013-06-03 01:58:25
【问题描述】:

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

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

【问题讨论】:

    标签: php sql datetime sql-order-by


    【解决方案1】:

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

    【讨论】:

    • 我认为它保存为字符串。或 varChar。有一个“日期时间”数据类型,是吗?有时它会这样存储在您的数据库中?
    • 当我按日期时间订购时,它使用月份,而不是年份。月/日/年。
    【解决方案2】:

    你可以试试这个

    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
    

    我用过here

    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
    

    【讨论】:

    • 我尝试在我的 sqlEditor 中使用 datePart 部分。它给我发了一个错误。我不确定为什么。 'datetime' 是正确的数据类型吗? 103 指的是什么?
    【解决方案3】:

    试试:

    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
    

    【讨论】:

    • 他妈的错过了一分钟 :)
    • 我喜欢这个外观。似乎它应该工作。但它仍然以疯狂的顺序显示。
    • 我喜欢这个外观。似乎它应该工作,但它不是。仍然以疯狂的顺序显示。现在看看我的输出。我的一些日期时间有 mm/dd/yyyy hh:mm 和一些有 mm/dd/yyyy HH:MM:SS 看起来它需要 4/14/2013 HH:MM 然后去 3/24/13 然后 2 /23/13,然后一旦到达 1/18/2013,它会显示不同的 dateTime HHMMSS,但在 2013 年 1 月之后仍然会到 2013 年 12 月(因为 1 对 12)仍然按月排序,看起来像.样式编号是什么意思,我需要管理 %d %m 等吗?
    • @TerakRaines 你能检查一下我下面的解决方案吗
    • @Yogus 抱歉,我直到现在才回来。我也在研究其他决赛的东西。
    猜你喜欢
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 2017-10-06
    相关资源
    最近更新 更多