如何以正确的顺序创建计算的日期字段(MySQL)

问题描述 投票:-1回答:2

我在MySQL中有一个timestamp字段,但是我想按Year,Month和Week分组。在这种情况下,我将按周计算系统错误计数。

现在,我可以这样查询:

SELECT 
    YEAR( ERRDATE ) AS YEAR,
    MONTH ( ERRDATE ) AS MONTH,
    WEEK ( ERRDATE ) AS WEEK,
    COUNT( DISTINCT ( ERRMSG ) ) AS ErrorCount 

(省略条款组)

但是该查询给了我我不希望的三列(年份,月份,星期)。

我想要的是一列,其计算的日期按降序排列,第二列,其错误值,因此我可以将这些数据传递给制图程序。

我已经尝试过使用CONCAT,但是问题在于CONCAT用于字符串,并且计算的日期顺序错误。我尝试使用CAST和CONVERT,甚至在CONCAT中使用嵌套的CAST,但仍然无法从时间戳字段中正确排序单个计算的日期列。

例如,这种方法无法正常工作:

CONCAT(YEAR(ERRDATE), MONTH(ERRDATE), WEEK(ERRDATE)) as THEDATE

所以,我如何以正确的顺序从tiemstamp字段中获得一个计算字段?

非常感谢,

mysql calculated-columns
2个回答
0
投票

如果当前查询已经为您提供了结果,您只需将其封装在子查询中

SELECT CONCAT ( year, month, week) as period, ErrorCount
FROM (
    SELECT YEAR ( ERRDATE ) AS YEAR,
           MONTH ( ERRDATE ) AS MONTH,
           WEEK ( ERRDATE ) AS WEEK,
           COUNT( DISTINCT ( ERRMSG ) ) AS ErrorCount
    ...
   ) as t

0
投票

您的查询应该是:

SELECT 
    DATE_FORMAT(ERRDATE,"%Y,%m,%U") AS Period,
    COUNT( DISTINCT ( ERRMSG ) ) AS ErrorCount
FROM YOUR_TABLE
GROUP BY Period;

查看有关DATE_FORMAT功能的更多信息

© www.soinside.com 2019 - 2024. All rights reserved.