date_format()
这个函数是比较常用的
select date_format('2022-08-01',''%Y-%m-%d %H:%i:%s')

TIME_FORMAT()
只接受小时、分钟、秒和微秒的格式说明符
格式化的参数解释
| 格式 | 解释 |
|---|---|
| %Y | 日期年份4位,如:2022 |
| %y | 日期年份2位,2022表示:22 |
| %M | 月名,如:8月,August |
| %m | 月,数值(01-12) ,如8月,08 |
| %c | 月,数值(1-12),如8月,8 |
| %e | 月的天,数值(0-31) |
| %D | 带有英文前缀的月中的天,如1号,1st |
| %d | 月的天,数值(01-31),如1号,01 |
| %H | 小时 (00-23),24小时制 |
| %k | 小时 (01-24),24小时制 |
| %h | 小时 (01-12),12小时制 |
| %I | 小时 (01-12),12小时制 |
| %p | AM或者PM |
| %i | 分钟,数值(00-59) |
| %S | 秒(00-59) |
| %s | 秒(00-59) |
| %f | 微秒 |
| %r | 时间,12-小时(hh:mm:ss AM 或 PM) |
| %T | 时间, 24-小时 (hh:mm:ss) |
| %U | 周 (00-53) 星期日是一周的第一天 |
| %u | 周 (00-53) 星期一是一周的第一天 |
| %V | 周 (01-53) 星期日是一周的第一天,与 %X 使用 |
| %v | 周 (01-53) 星期一是一周的第一天,与 %x 使用 |
| %W | 星期名 |
| %w | 周的天 (0=星期日, 6=星期六) |
| %X | 年,其中的星期日是周的第一天,4 位,与 %V 使用 |
| %x | 年,其中的星期一是周的第一天,4 位,与 %v 使用 |
| %a | 缩写星期名 |
| %b | 缩写月名 |
Convert(nvarchar(10),count_time,121)
CONVERT为日期转换函数,一般就是在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)
相互转换的时候才用到的函数的3个参数,第1个参数为,转换后的大小,第2个为转换日期的字段或函数,第3个为转换的格式
select convert(varchar(10),getdate(),23)

参数解释:
| 格式 | 解释 |
|---|---|
| 0 or 100 | mm d yyyy hh:mm AM(或PM) ,不带’10’年份只有两位 |
| 1 or 101 | mm/dd/yyyy ,不带’10’年份只有两位 |
| 2 or 102 | yyyy-mm-dd ,不带’10’年份只有两位 |
| 3 or 103 | dd/mm/yyyy ,不带’10’年份只有两位 |
| 4 or 104 | dd-mm-yyyy ,不带’10’年份只有两位 |
| 5 or 105 | dd-mm-yyyy ,不带’10’年份只有两位 |
| 6 or 106 | dd mm yyyy ,不带’10’年份只有两位 |
| 7 or 107 | mm dd,yyyy ,不带’10’年份只有两位 |
| 8 or 108 | hh:mm:ss ,不带’10’年份只有两位 |
| 9 or 109 | mm dd yyyy hh:mi:ss:mmmm AM(或PM) ,不带’10’年份只有两位 |
| 10 110 | mm-dd-yyyy,不带’1’年份只有两位 |
| 11 111 | yyyy/mm/dd,不带’1’年份只有两位 |
| 12 112 | yyyymmdd,不带’1’年份只有两位 |
| 13 or 113 | dd mon yyyy hh:mm:ss:mmm(24小时制),不带’1’年份只有两位 |
| 14 114 | hh:mm:ss:mmm(24小时制),不带’1’年份只有两位 |
| 20 or 120 | yyyy-mm-dd hh:mm:ss(24小时制),不带’1’年份只有两位 |
| 21 or 121 | yyyy-mm-dd hh:mm:ss:mmm(24小时制),不带’1’年份只有两位 |
| 23 | yyyy-mm-dd |
常用的几个参数
Select CONVERT(varchar(100), GETDATE(), 8): 18:05:30
Select CONVERT(varchar(100), GETDATE(), 24): 18:05:30
Select CONVERT(varchar(100), GETDATE(), 108): 18:05:30
Select CONVERT(varchar(100), GETDATE(), 12): 220801
Select CONVERT(varchar(100), GETDATE(), 23): 2022-08-01
date_format()
语法:date_format(date/timestamp/string ts, string fmt)
具体格式可以自定义,与Java的SimpleDateFormat差不多。
Java SimpleDateFormat 实现日期格式化
| 字母 | 含义 | 示例 |
|---|---|---|
| y | 年份一般用 yy 表示两位年份,yyyy 表示 4 位年份 | 使用 yy 表示的年扮,如 11;使用 yyyy 表示的年份,如 2011 |
| M | 月份。一般用 MM 表示月份,如果使用 MMM,则会根据语言环境显示不同语言的月份 | 使用 MM 表示的月份,如 05;使用 MMM 表示月份,在 Locale.CHINA语言环境下,如“十月”;在 Locale.US语言环境下,如 Oct |
| d | 月份中的天数。一般用 dd 表示天数 | 使用 dd 表示的天数,如 10 |
| D | 年份中的天数。表示当天是当年的第几天, 用 D 表示 | 使用 D 表示的年份中的天数,如 295 |
| E | 星期几。用 E 表示,会根据语言环境的不同, 显示不同语言的星期几 | 使用 E 表示星期几,在 Locale.CHINA 语言环境下,如“星期四”;在Locale.US 语言环境下,如 Thu |
| H | 一天中的小时数(0~23)。一般用 HH 表示小时数 | 使用 HH 表示的小时数,如 18 |
| h | 一天中的小时数(1~12)。一般使用 hh 表示小时数 | 使用 hh 表示的小时数,如 10 (注意 10 有可能是 10 点,也可能是 22 点) |
| m | 分钟数。一般使用 mm 表示分钟数 | 使用 mm 表示的分钟数,如 29 |
| s | 秒数。一般使用 ss 表示秒数 | 使用 ss 表示的秒数,如 38 |
| S | 毫秒数。一般使用 SSS 表示毫秒数 | 使用 SSS 表示的毫秒数,如 156 |
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateDemo {
public static void main(String[] args) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf.format(new Date()));
}
}
结果:

Hive date_format()日期格式化示例
select date_format(current_timestamp(),'yyyy/MM/dd') as df1,date_format(current_timestamp(),'yyyy-MM-dd') as df2
结果:
