<< Click to Display Table of Contents >> 日期时间函数复制链接 |
日期函数允许对日期列进行操作。
➢例如:
有一个值为年、月、日的日期字段(2004-04-15)。可以使用日期函数(例如dateTrunc(date_part,date, [start_of_week])函数),依据这些现有值创建新的日期值,可以返回任何现有日期值的季度开始日期。
日期计算如下所示:
DATETRUNC('quarter',col['订单日期'])
因此,如果原始日期为“2021-08-30”,则使用上面的计算会返回“2021-07-01”,即返回 3 季度的开始日期: 2021年7月 1 。
永洪中的日期函数都是使用传统的公历标准来计算的。
公历中,在新的一年开始时,该年的第1周计为在1月1日开始,而不管1月1日是一周中的哪一天。
➢例如:
1月1日为星期六,则第1周将有一天在该周,并且第2周将在下一个星期日开始。
永洪产品提供了多种日期函数。请参见日期函数的语法表 。
•关于date_part
dateAdd, dateGap, dateName, dateTrunc等使用 date_part,它是一个常量字符串参数。有效 date_part 值为:
DATE_PART |
值 |
---|---|
year |
四位数年份 |
quarter |
1-4 |
month |
1-12 |
hour |
0-23 |
minute |
0-59 |
second |
0-59 |
dayofyear |
一年中的第几天;1 月 1 日为 1、2 月 1 日为 32,依此类推 |
dayofmonth |
1-31 |
dayofweek |
1-7 或 "Sunday"、"Monday" 等 |
weekofyear |
1-52 |
•关于start_of_week
许多日期函数还使用start_of_week,它是一个常量字符串参数。start_of_week用来指定周的起始日,start_of_week的有效值为:"monday","tuesday","wednesday","thursday","friday","saturday","sunday"。
➢例如:dateTrunc(date_part, date, [start_of_week])
dateTrunc('weekofyear',date(2021,8,30),返回一周的第一天,返回值为2021-08-29。不指定时,周的起始日为周天,通过全局参数monday.first.day.of.week=false来配置周的起始日期为周一还是周天。
dateTrunc('weekofyear', date(2021,8,30),"monday"),返回值为2021-08-30
dateTrunc('weekofyear', date(2021,8,30),"thursday"),返回值为2021-08-26
函数 |
语法 |
说明 |
举例 |
---|---|---|---|
date |
date(year, month, day) |
通过数字生成日期值。 |
date(2020,11,3) = 2020-11-03 |
dateAdd |
dateAdd(date, date_part, interval) |
返回指定日期,该日期的指定 date_part中添加了指定的数字 interval。date_part的可选值为"year","quarter","month", "weekofyear","dayofyear", "dayofmonth","dayofweek","hour", "minute", "second"。 |
dateAdd(col['order_date'],'month', 3) 该表达式会向订单日期添加三个月 |
dateGap |
dateGap(date1, date2, date_part)
|
返回两个日期按照date_part比较的差值。date_part的可选值为:year,quarter,month,weekofyear,dayofyear,dayofmonth,dayofweek,hour,minute,second。 |
假如col['order_date'] 是 2010-04-13,col['receive_date'] 是 2010-04-19 dateGap(col['order_date'], col['receive_date'], 'month') = 0 dateGap(col['order_date'], col['receive_date'], 'dayofmonth') = 6 |
dateName |
dateName(date, date_part, [start_of_week]) |
以字符串形式返回date的date_part。date_part的可选值为"year","quarter","month", "weekofyear","dayofyear", "dayofmonth","dayofweek","hour", "minute","second"。 start_of_week 为可选参数,可选值为"monday","tuesday","wednesday", "thursday","friday","saturday", "sunday"。 ➢注意: 如果省略不写start_of_week,则周的起始日是由数据源的配置决定。 |
假如时间是2021-04-25 18:30:00,则dateName(col['order_date'], 'Monday')=4 |
datePart |
datePart(date,date_part)
|
以整数形式返回date的date_part。date_part的可选值为"year","quarter", "month","weekofyear","dayofyear", "dayofmonth","dayofweek","hour", "minute","second"。 |
假如col['order_date'] 是 2010-04-13 datePart(col['order_date'], 'year') = 2010 datePart(col['order_date'], 'month') = 4 |
dateTrunc |
dateTrunc(date_part, date, [start_of_week])
|
按 date_part 指定的准确度截断指定日期。此函数返回新日期。 ➢例如: 以月份(month)级别截断处于月份中间的日期时,此函数返回当月的第一天。 date_part的可选值为"year","quarter", "month","weekofyear","dayofyear", "dayofmonth","dayofweek","hour", "minute","second"。 start_of_week 为可选参数,可选值为"monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"。 |
假如col['order_date'] 是 2010-05-13 18:30:00 dateTrunc('quarter', col['order_date']) = 2010-04-01 00:00:00 dateTrunc('month', col['order_date']) = 2010-05-01 00:00:00 |
dateValue |
dateValue(date) |
返回到起始日期的天数,1900-01-01返回的是0。
|
假如col['order_date'] 是 2020-02-17 。 dateValue(col['order_date']) = 43876 |
day |
day(date) |
以整数的形式返回给定日期的天,值范围[1, 31]。
|
假如col['order_date'] 是 2010-04-13 day(col['order_date']) = 13 |
getDate |
getDate(date) |
检测输入的参数是否是日期类型的,是,返回参数,否,返回null。 |
getDate(col['order_date']) |
isDate |
isDate(date) |
检测输入的值或者列是否是日期类型的,返回true或者false。 |
isDate(col['order_date']) |
month |
month(date) |
以整数的形式返回给定日期的月,值范围[1, 12]。 |
假如col['order_date'] 是 2010-04-13 month(col['order_date']) = 4 |
now |
now() |
返回服务器日期时间。 |
now() = 2020-02-17 16:08:21 |
quarter |
quarter(date) |
以整数的形式返回给定日期的季度,值范围[1, 4]。 |
假如col['order_date'] 是 2010-04-13 quarter(col['order_date']) = 2 |
today |
today()
|
返回服务器日期。 |
today() = 2020-02-17 |
weekday |
weekday(date, [return_type]) |
以整数形式返回给定日期的周。return_type 为可选参数,如果设置值为数字1或省略,则返回的值为1至7, 代表星期天到星期六;如果设置的数字是2,则返回的值为1至7 ,代表星期一到星期天;如果设置的值为数字3,则返回的值为0至6,代表星期一到星期天。 |
假如col['order_date'] 是 2020-02-17 weekday(col['order_date']) = 2 |
weekNum |
weekNum(date, [dayType]) |
返回一年内的周数,dayType传数字2代表一个星期的第一天为星期一,不填或其他表示一个星期的第一天为星期天。 |
假如col['order_date'] 是 2020-01-03 weekNum(col['order_date']) = 2 |
year |
year(date) |
以整数的形式返回给定日期的年份。 |
假如col['order_date'] 是 2010-04-13 。 year(col['order_date']) = 2010 |