zoukankan      html  css  js  c++  java
  • Mysql group by 实现排序,Java 8 LocalDateTime 使用,ConcurrentHashMap中的putIfAbsent方法的使用,HashMap的put方法返回值

    Mysql group by 实现排序 【参考

    数据库原理中一个重要的论点就是集全中的记录是没有顺序的。 不能依赖数据库自己的排序。 原表中需要有个排序的字段以能确定原始顺序,比如加个ID序列。
    先分组排序

      SELECT
        max(id) max_id
        FROM xxx_table
        where
        deleted = 0 and enabled = 1  and time > DATE_SUB(CURDATE(),INTERVAL 1 DAY)
       group by cluster_id,group_id order by max_id desc
    

    在根据排序结果 分页查询

    curdate()表示当天日期 【参考
    统计前一天
    如果表示前一天的数据,则不能使用curdate()-1,因为当日期为月初时,curdate()-1 日期就不是上一个月的月末日期。

    关于date_sub()函数的例子:
    今天是2017年8月1日。
    date_sub('2017-08-01',interval 1 day) 表示 2017-07-31
    date_sub('2017-08-01',interval 0 day) 表示 2017-08-01
    date_sub('2017-08-01',interval -1 day) 表示 2017-08-02
    date_sub('2017-07-31',interval -1 day) 表示 2017-08-01
    date_sub(curdate(),interval 1 day) 表示 2017-07-31
    date_sub(curdate(),interval -1 day) 表示 2017-08-02
    date_sub(curdate(),interval 1 month) 表示 2017-07-01
    date_sub(curdate(),interval -1 month) 表示 2017-09-01
    date_sub(curdate(),interval 1 year) 表示 2016-08-01

    Java 8 LocalDateTime 【参考

    LocalTime : 只包括时间
    LocalDate : 只包括日期
    LocalDateTime : 包括日期和时间

    JDBC映射
    LocalTime 对应 time
    LocalDate 对应 date
    LocalDateTime 对应 timestamp

      public class TimeTest {
    
    @Test
    public void testTime() {
        LocalDateTime time = LocalDateTime.now();
    
        System.out.println(time.toString()); //字符串表示
        System.out.println(time.toLocalTime()); //获取时间(LocalTime)
        System.out.println(time.toLocalDate()); //获取日期(LocalDate)
        System.out.println(time.getDayOfMonth()); //获取当前时间月份的第几天
        System.out.println(time.getDayOfWeek());  //获取当前周的第几天
        System.out.println(time.getDayOfYear());  //获取当前时间在该年属于第几天
        System.out.println(time.getHour());
        System.out.println(time.getMinute());
        System.out.println(time.getMonthValue());
        System.out.println(time.getMonth());
        System.out.println("-----------------------------------");
        //格式化输出
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("YYYY/MM/dd HH:mm:ss");
        System.out.println(time.format(formatter));
        //构造时间
        LocalDateTime startTime = LocalDateTime.of(2018, 1, 1, 20, 31, 20);
        LocalDateTime endTime = LocalDateTime.of(2018, 1, 3, 20, 31, 20);
        //比较时间
        System.out.println(time.isAfter(startTime));
        System.out.println(time.isBefore(endTime));
    
        //时间运算,相加相减
        System.out.println(time.plusYears(2)); //加2年
        System.out.println(time.plusDays(2)); //加两天
        System.out.println(time.minusYears(2)); //减两年
        System.out.println(time.minusDays(2)); //减两天
    
        //获取毫秒数(使用Instant)
        System.out.println(time.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
        //获取秒数(使用Instant)
        System.out.println(time.atZone(ZoneId.systemDefault()).toInstant().getEpochSecond());
    }
    
      }
    

    ConcurrentHashMap中的putIfAbsent方法的使用 【参考

    public V putIfAbsent(@NotNull K key,@NotNull V value)
    putIfAbsent方法主要是在向ConcurrentHashMap中添加键—值对的时候,它会先判断该键值对是否已经存在。

    如果不存在(新的entry),那么会向map中添加该键值对,并返回null。
    如果已经存在,那么不会覆盖已有的值,直接返回已经存在的值。

    HashMap的put方法返回值

    如果key没有重复,put成功,则返回null
    如果key重复了,返回的是map.get(key),也就是当前这个key对应的value

  • 相关阅读:
    中国移动 使用Linux、OpenStack
    【 【henuacm2016级暑期训练】动态规划专题 K】 Really Big Numbers
    【【henuacm2016级暑期训练】动态规划专题 J】Red-Green Towers
    【【henuacm2016级暑期训练】动态规划专题 I】Gargari and Permutations
    【【henuacm2016级暑期训练】动态规划专题 H】Greenhouse Effect
    【 【henuacm2016级暑期训练】动态规划专题 G】 Palindrome pairs
    【【henuacm2016级暑期训练】动态规划专题 F】Physics Practical
    【【henuacm2016级暑期训练】动态规划专题 E】Destroying Roads
    【【henuacm2016级暑期训练】动态规划专题 D】Writing Code
    【henuacm2016级暑期训练-动态规划专题 C】Little Girl and Maximum XOR
  • 原文地址:https://www.cnblogs.com/cuiyf/p/13738276.html
Copyright © 2011-2022 走看看