繁体   English   中英

MySQL-如何使用AM / PM对日期格式进行排序

[英]Mysql - how to sort the date format with am/pm

请检查查询。

SELECT DATE_FORMAT( CAST( CONCAT( table.date,  " ", table.time ) ) ,  '%p' ) 
FROM table AS table

Error:
[hash]1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '), '%p') FROM exp_visitorsday as vd LIMIT 0, 30' at line 2

在以下情况下,我尝试了此查询。

SELECT DATE_FORMAT( CAST( CONCAT( table.date,  " ", table.time ) as datetimecol ) as datetimecol,  '%p' ) 
FROM table AS table

SELECT DATE_FORMAT( CAST( CONCAT( table.date,  " ", table.time ) as datetimecol ),  '%p' ) 
FROM table AS table

样本数据:

table.date => 01-08-2013
table.time => 10:00 AM

怎么查询? 这个查询有什么问题?

您可以:

SELECT * 
FROM (
    SELECT DATE_FORMAT( 
                                    CONCAT( SUBSTRING_INDEX( "01-08-2013", "-", -1), "-",  
                                    SUBSTRING_INDEX(SUBSTRING_INDEX( "01-08-2013", "-", 2), "-", -1), "-", 
                                    SUBSTRING_INDEX( "01-08-2013", "-", 1), " ", 
                                    IF( SUBSTRING_INDEX( "10:00 PM", " ", -1) = "AM", 
                                                SUBSTRING_INDEX( "10:00 AM", " ", 1),  
                                                CONCAT( SUBSTRING_INDEX(SUBSTRING_INDEX( "10:00 AM", " ", 1), ":", 1) + 12, ":", SUBSTRING_INDEX(SUBSTRING_INDEX( "10:00 AM", " ", 1), ":", -1))  )) , '%Y-%m-%d %h:%i') AS datformat ) AS tmp
ORDER BY tmp.datformat;

说明:

SELECT SUBSTRING_INDEX( "01-08-2013", "-", 1); #Day
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX( "01-08-2013", "-", 2), "-", -1);#Month
SELECT SUBSTRING_INDEX( "01-08-2013", "-", -1); #Year

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM