Power BI中如何提取时间列的12小时制小时(带AM/PM标识)
Power BI中提取12小时制小时及时段标识的方法
你可以通过DAX计算列或者Power Query自定义列两种方式实现需求,以下是具体步骤:
方法一:DAX计算列
在数据视图中,点击「新建列」,输入以下公式(注意替换'表名'[时间列]为你实际的表名和列名):
12小时制时段 = VAR 当前小时 = HOUR('表名'[时间列]) VAR 12小时值 = IF(当前小时 IN {0,12}, 12, MOD(当前小时, 12)) VAR 时段标识 = IF(当前小时 >= 12, "PM", "AM") RETURN 12小时值 & " " & 时段标识
- 逻辑说明:
- 先提取时间列的24小时制小时数
- 处理特殊值:0点(午夜)和12点(正午)统一显示为12,其他小时取模12得到12小时制数值
- 根据小时数判断时段:>=12为PM,否则为AM
- 最后拼接小时数和时段标识
方法二:Power Query自定义列
进入Power Query编辑器,选中目标时间列后,点击「添加列」→「自定义列」,输入以下公式:
let 提取小时 = Time.Hour([时间列]), 转换12小时 = if 提取小时 = 0 or 提取小时 = 12 then 12 else 提取小时 mod 12, 时段 = if 提取小时 >= 12 then "PM" else "AM" in Text.From(转换12小时) & " " & 时段
- 逻辑说明:
- 用
Time.Hour提取24小时制小时数 - 同样处理0点和12点的特殊情况,其他小时取模12
- 判断时段后,将小时数转为文本并与时段拼接
- 用
示例验证
| 原时间列 | 生成的12小时制时段 |
|---|---|
| 10:12:02 AM | 10 AM |
| 8:10:09 PM | 8 PM |
| 12:30:00 AM | 12 AM |
| 12:15:00 PM | 12 PM |
| 00:45:00(午夜) | 12 AM |
内容的提问来源于stack exchange,提问作者amal
相关产品推荐
相关产品推荐

