问题描述
日期显示为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 (将#修改为@)