Power BI DAX 之日期函数

此篇文章描述了日期函数 而非时间智能函数。

日期函数是完成对日期的简单计算,如:某天是星期几。

时间智能函数完成基于日期的分析逻辑计算

        1 时间智能函数不是日期函数

        2 计算 同比  环比  最近7天 等业务逻辑


日期函数一般常用如下


1.DATE 

以日期时间格式返回指定的日期

 DATE(<year>, <month>, <day>)


2.DATEVALUE

将文本格式的日期转换为日期时间格式的日期。

DATEVALUE(date_text)


3.DAY 

返回月份中的第几天,一个从 1 到 31 的数字。

DAY(<date>)  


4.EDATE

返回开始日期之前或之后指定月数的日期。使用 EDATE 计算到期日或到期日,该日期与发行日在当月的同一天。

EDATE(<start_date>, <months>)

<months> 是小数 会四舍五入  例如 1.5->2

EDATE 跟 EMONTH 区别 前者返回+/-之后的日期,后者返回+/-之后的日期 的月份最后一天

例如 2021/3/1     (-1month)->  2021/2/1

后者 2021/3/1     (-1month)->  2021/2/28


5.EOMONTH 

返回指定月数之前或之后的月份最后一天的日期时间格式的日期。使用 EOMONTH 计算到期日或到期日,该日期是该月的最后一天。

EOMONTH(<start_date>, <months>)

 <months> 是小数 会四舍五入  例如 1.5->2

EDATE 跟 EMONTH 区别 前者返回+/-之后的日期,后者返回+/-之后的日期 的月份最后一天

例如 2021/3/1     (-1month)->  2021/2/1

后者 2021/3/1     (-1month)->  2021/2/28


6.HOUR

将小时作为从 0 (12:00 AM) 到 23 (11:00 PM) 的数字返回。

HOUR(<datetime>)


7.MINUTE

MINUTE(<datetime>)

给定日期和时间值,以从 0 到 59 的数字返回分钟。


8.MONTH

以从 1(一月)到 12(十二月)的数字返回月份。

MONTH(<datetime>)


9.NOW/TODAY

NOW()  以日期时间格式返回当前日期和时间。

TODAY() 返回当前日期。

二者区别  NOW 返回的当前时间除了日期还有时间(时分秒)

                 TODAY仅仅返回当前日期


10.SECOND

以 0 到 59 的数字形式返回时间值的秒数。

SECOND(<time>)


11.TIME

将以数字形式给出的小时、分钟和秒转换为日期时间格式的时间。

TIME(hour, minute, second)


12.TIMEVALUE

将文本格式的时间转换为日期时间格式的时间。

TIMEVALUE(time_text)

 


12.WEEKDAY

返回一个从 1 到 7 的数字,标识日期的星期几。默认情况下,日期范围从 1(星期日)到 7(星期六)。

WEEKDAY(<date>, <return_type>)

默认return_type 1 

 return_type:1,星期从星期日 (1) 开始,到星期六 (7) 结束。编号为 1 到 7。

return_type:2,一周从星期一 (1) 开始,到星期日 (7) 结束。

return_type:3,周从星期一 (0) 开始,到星期日 (6) 结束。编号为 1 到 7。

案例weekday日期函数1     WEEKDAY('表 2'[Date],1)

       weekday日期函数2     WEEKDAY('表 2'[Date],2)

       weekday日期函数3     WEEKDAY('表 2'[Date],3)

 return_type 1 是从周日开始算 1 往后计算到 7(周六)

return_type 2 是从周一开始算1 往后计算到7(周日)

return_type 3 是从周一开始算0 往后计算到6(周日)


13.WEEKNUM

根据return_type值返回给定日期的周数。周数表示一周在一年内的数字位置。

有两个系统用于此功能:

  • 系统 1 - 包含 1 月 1 日的那一周是一年中的第一周,编号为第 1 周。
  • 系统 2 - 包含一年中第一个星期四的那一周是一年中的第一周,编号为第 1 周。该系统是 ISO 8601 中指定的方法,通常称为欧洲周编号系统。

WEEKNUM(<date>[, <return_type>])

  • 默认情况下,WEEKNUM 函数使用日历约定,其中包含 1 月 1 日的一周被视为一年中的第一周。然而,在欧洲广泛使用的 ISO 8601 日历标准将第一周定义为新年中大部分天数(四天或更多天)的那一周。这意味着,如果return_type是 21 以外的任何有效值,那么对于 1 月的第一周有 3 天或更短时间的任何年份,WEEKNUM 函数将返回不同于 ISO 8601 定义的周数。

  • 对于return_type,除 21 外,某些 DirectQuery 数据源可能不支持以下有效值:

WEEKNUM日期函数1 = WEEKNUM('表 2'[Date],1)

WEEKNUM日期函数2 = WEEKNUM('表 2'[Date],2)

WEEKNUM日期函数21 = WEEKNUM('表 2'[Date],21)

1 跟 2 区别在于周开始于周日  跟周一

不同于21 是因为21 采用了系统2 (四天或更多天)的那一周才会成为第一周) 所以1.1 1.2 没有超过四天不算作为第一周


14.YEAR

以 1900-9999 范围内的四位整数形式返回日期的年份。

YEAR(<date>)


15.YEARFRA 

返回两个日期之间的天数与全年天数的占比

YEARFRAC(<start_date>, <end_date>, <basis>)

学期定义
开始日期日期时间格式的开始日期。
结束日期日期时间格式的结束日期。
基础(可选)要使用的天数基础类型。所有参数都被截断为整数。

基础 - 描述

0 - 美国 (NASD) 30/360

1 - 实际/实际

2 - 实际/360

3 - 实际/365

4 - 欧洲 30/360

你也许经常用DATEDIFF,但DATEDIFF只能返回大概的差异,而这个函数会精确到时间占全年的比例,并返回任意精度的小数位数,在需要精确年度差异的时候很好用,并且可以控制全年是按360天还是365天来计算。


16.DATEDIFF 

返回两个日期之间的间隔边界数。

DATEDIFF(<Date1>, <Date2>, <Interval>)

学期定义
日期1标量日期时间值。
日期2标量日期时间值。
间隔比较日期时使用的间隔。该值可以是以下之一:

- SECOND
- MINUTE
- HOUR
- DAY
- WEEK
- MONTH
- QUARTER
- YEAR

 17.CALENDAR

返回一个表,其中包含一个名为“Date”的单列,其中包含一组连续的日期。日期范围是从指定的开始日期到指定的结束日期,包括这两个日期。

CALENDAR(<start_date>, <end_date>)


18.CALENDARAUTO

返回一个表,其中包含名为“Date”的单个列,其中包含一组连续的日期。日期范围是根据模型中的数据自动计算的。

CALENDARAUTO([fiscal_year_end_month])

  • 日期范围计算如下:

    • 模型中不在计算列或计算表中的最早日期作为 MinDate。
    • 模型中不在计算列或计算表中的最新日期作为 MaxDate。
    • 返回的日期范围是与 MinDate 关联的会计年度开始和与 MaxDate 关联的会计年度结束之间的日期

在此示例中,数据模型中的 MinDate 和 MaxDate 分别为 2010 年 7 月 1 日和 2011 年 6 月 30 日。

CALENDARAUTO()将返回 2010 年 1 月 1 日至 2011 年 12 月 31 日之间的所有日期。

CALENDARAUTO(3)将返回 2010 年 3 月 1 日至 2012 年 3 月 31 日之间的所有日期。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值