SQL常见函数整理之Format将日期、时间和数字值格式化

  -- 加(Mysql)

  select date_add(now(),interval 1 day);

  -- year:年,quarter:季,month:月,week:周,day:天,hour:小时,minuter:分钟,second:秒,microsecond:毫秒

  -- 加(sql server)

  select dateadd(day,n,'2023-06-20')

  -- 加(Hive)

  select date_add(current_timestamp(),1) -- 加一天

  select add_months('2022-07-16', n) -- Hive加n个月份

  select date_format(date_sub(current_timestamp(),1),'yyyy-MM-dd') --指定前一天日期

  select from_unixtime((unix_timestamp()-86400),'yyyy-MM') --指定前一天日期

  -- Gbase指定前一天日期

  select subdate(current_date,interval 1 day)

  -- 减

  select date_sub(now(),interval 1 month);

  select date_sub(date_format(current_timestamp(),'yyyy-MM-dd'),1)

  select date_sub(current_timestamp(),14) -- Hive指定前一天日期

  -- 计算日期间隔

  select datediff('2023-6-16','2023-6-1') -- mysql,Hive计算两个日期之间的间隔(相差天数)

  select datediff('d','2023-6-1','2023-6-16 12:20:00') --sql server计算两个日期之间间隔天数

  select months_between('2023-09-22','2022-07-16') -- Hive计算两个日期之间的间隔

  select timediff('12:00:00', '11:30:00') -- 两个时间间隔

  select timestampdiff(month,date_sub(now(),interval 60 day),now()); -- 相差月

  -- timestampdiff第一个参数定义返回计算的结果。year:年,quarter:季,month:月,week:周,day:天,hour:小时,minuter:分钟,second:秒,microsecond:毫秒

  -- timestampdiff减去的日期带有时间,会认为是下一天(2023-07-20 08:00:00会按照2023-07-21计算);datediff会直接截取时间(2023-07-20 18:00:00也会按照2023-07-20计算)

  select timestampdiff(day,'2023-07-13',current_date()) -- timestampdiff可以实现各种字符串(例如2023-07-13,20230703)日期的加减

  -- 当月的第一天

  select STR_TO_DATE(CONCAT(DATE_FORMAT(now(),'%Y-%m'), '-01'), '%Y-%m-%d')

  -- sql server返回当月1号

  select CONVERT(varchar(10),DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0),120)

  -- 当月最后一天

  select DATE_ADD(STR_TO_DATE(CONCAT(DATE_FORMAT(DATE_ADD(now(),INTERVAL 1 MONTH),'%Y-%m'), '-01'), '%Y-%m-%d'),INTERVAL -1 DAY);