Py学习  »  DATABASE

如何显示数据日期MYSQL/2小时

Fajar Donny Bachtiar • 5 年前 • 1664 次点击  

我在数据库里有这样的桌子

dbFiddle

我想按日期/2小时显示数据顺序

例如

HF01245523 | 2019-11-17 06:01:05 | 1.10513 | 599
HF01245043 | 2019-11-17 04:01:06 | 1.10513 | 599
HF01244562 | 2019-11-17 02:00:06 | 1.10513 | 599

有可能吗?

我试过这个问题:

SELECT * FROM (
    SELECT MAX(tgl_harga) AS maxdate
    FROM tbl_dummy
    GROUP BY 
        YEAR(tgl_harga), 
        MONTH(tgl_harga), 
        WEEK(tgl_harga), 
        DAY(tgl_harga) 
) AS g 
INNER JOIN tbl_dummy ON g.maxdate = tbl_dummy.tgl_harga

但这个查询只是显示/天,我不知道显示记录/2小时。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/49811
 
1664 次点击  
文章 [ 1 ]  |  最新文章 5 年前
GMB
Reply   •   1 楼
GMB    5 年前

根据现有的查询,可以进行日期运算。考虑:

SELECT t.* FROM (
    SELECT MAX(tgl_harga) AS maxdate
    FROM tbl_dummy
    GROUP BY 
        DATE(tgl_harga), 
        FLOOR(HOUR(tgl_harga) / 2)
) AS g 
INNER JOIN tbl_dummy t ON g.maxdate = t.tgl_harga
ORDER BY t.tgl_harga DESC

这将为每个固定的2小时窗口提供一条记录,这是该窗口中的最新记录(因此:0小时到2小时之间的一条记录,2小时到4小时之间的一条记录,依此类推)。注意,这并不一定意味着resultset中的记录之间有2小时的间隔。

在你的 demo on DB Fiddle ,查询将生成:

id_harga   | tgl_harga           |   harga | id_region
:--------- | :------------------ | ------: | :--------
HF01245523 | 2019-11-17 06:01:05 | 1.10513 | 599      
HF01245515 | 2019-11-17 05:59:07 | 1.10513 | 599      
HF01245035 | 2019-11-17 03:59:06 | 1.10513 | 599      
HF01244554 | 2019-11-17 01:57:06 | 1.10513 | 599      
HF01244082 | 2019-11-16 23:59:06 | 1.10513 | 599      
HF01243602 | 2019-11-16 21:59:06 | 1.10513 | 599      
HF01243114 | 2019-11-16 19:57:07 | 1.10513 | 599      
HF01242642 | 2019-11-16 17:59:06 | 1.10513 | 599      
HF01242162 | 2019-11-16 15:59:07 | 1.10513 | 599      
HF01241682 | 2019-11-16 13:59:06 | 1.10513 | 599