如何解决无法识别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 举报,一经查实,本站将立刻删除。