在每个pkey中查找最大的2将日期时间“2020年1月24日上午10:12:12”转换为2020年1月24日

fquxozlt  于 2021-07-26  发布在  Java
关注(0)|答案(3)|浏览(230)

1.在每个pkey中找出最大的日期

PKEY    COL1    COL2    DATE1
1   APPLE1  ORANGE1 01-Jun-20
1   APPLE2  ORANGE2 02-Jun-20
1   APPLE3  ORANGE3 03-Jun-20
1   APPLE4  ORANGE4 04-Jun-20
2   COCONUT1    MANGO1  05-Jun-20
2   COCONUT2    MANGO2  06-Jun-20
2   COCONUT2    MANGO2  07-Jun-20
3   MELON1  LEMON1  08-Jun-20
3   MELON2  LEMON2  09-Jun-20
3   MELON3  LEMON3  10-Jun-20
3   MELON4  LEMON4  11-Jun-20
4   WALNUT1 HAZELNUT1   12-Jun-20
4   WALNUT2 HAZELNUT2   13-Jun-20
4   WALNUT3 HAZELNUT3   14-Jun-20

将日期时间“01-24-2020 10:12:12 am”转换为2020年1月24日

pxiryf3j

pxiryf3j1#

你可以这样做:注意等级的概念正在被使用。

SET @intRank := 1;
SET @intPrevPKEY := -1;

SELECT PKEY, COL1, COL2, DATE1
FROM
(
    SELECT *, 
    IF(@intPrevPKEY = PKEY, @intRank := @intRank + 1, @intRank :=1) AS rank,
    @intPrevPkey := PKEY
    FROM your_table
    ORDER BY PKEY, STR_TO_DATE(DATE1, '%d-%M-%y') DESC
) AS inner_table
WHERE inner_table.rank = 1
cunj1qz1

cunj1qz12#

这个简单的查询应该可以工作。

Select pkey,max(STR_TO_DATE(DATE1, '%d-%M-%y')) as MAX_DATE from  TABLE_NAME group by pkey;
3okqufwl

3okqufwl3#

假设每个pkey中的最大日期并不意味着一个简单的最大日期,并且您想要具有最大日期的行:

select *
from tab
qualify 
   rank() 
   over (partition by PKEY
         order by DATE1 desc) = 1

要将字符串强制转换为datetime,可以应用qa格式:

cast(cast(col as timestamp format 'mm-dd-yyyyBhh:mi:ssBt') as date)

相关问题