无法识别3字节二进制日期获取变量的Power Query转换

问题描述

日期显示为3字节的十六进制值示例= 72、02、11 转换为72转换为十进制= 114 + 1900 = 2014,02 = 02,11 = 17 日期是2014年2月17日

Bdate以三个字节的字段形式出现,因此定义为二进制 第一个字节=年,第二个字节=月,第三个字节=天。

构建一个要调用的函数,因为数据库中的多个日期都采用这种格式。 将十六进制转换为十进制的辅助函数是库中的fnhex2Dec。 这是FixDateBn的代码

    let
        FixDateBn = (Bdate as binary) =>
    
        let
        FixDateBn = BinaryFormat.ByteOrder(
        BinaryFormat.Record ([
                Yr= BinaryFormat.Byte,//<- the Yr variable is getting Name Yr wasn't recognized.
                Mth = BinaryFormat.Byte,Day = BinaryFormat.Byte ]),ByteOrder.LittleEndian),Yrnum = fnhex2Dec(Yr,16)+1900,Mthnum = fnhex2Dec(Mth,16),Daynum = fnhex2Dec(Day,Gooddate = #date(Yrnum,Mthnum,Daynum) as date
        in 
            if Bdate is null then null else Gooddate
    in
        FixDateBn

感谢任何帮助。

这是从十六进制转换为常规日期的sql。不知道如何使用Power Query M语言来做到这一点。

CREATE FUNCTION "GetDateFromWDate" (:wDate CHAR(3)) RETURNS DATE AS
BEGIN
    DECLARE :tmpdate DATE
    SET :tmpdate = '1900-01-01';   
    IF (:wDate <> null) and (:wDate <> '') THEN
        SET :tmpdate = DATEFROMPARTS (ascii(substring(:wDate,1,1)) + 1900,ascii(substring(:wDate,2,1)),3,1)));
    END IF;   
    RETURN :tmpdate;
END

谢谢 萨米

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...