在第一个加载脚本中使用了 SET TimestampFormat='DD/MM/YYYY h:mm:ss[.fff] TT' 。在第二个加载脚本中,时间戳格式更改为 SET TimestampFormat='MM/DD/YYYY hh:mm:ss[.fff]' 。不同的结果示出 SET TimeFormat 语句如何用于不同的时间数据格式。
下面的表格示出用在所遵照的加载脚本中的数据集。表格的第二列示出数据集中每个时间戳的格式。前五个时间戳遵照 ISO 8601 规则但是第六个没有。
数据集
表格示出数据集中使用的时间数据以及每个时间戳的格式。
transaction_timestamp time data format 2018-08-30 YYYY-MM-DD 20180830T193614.857 YYYYMMDDhhmmss.sss 20180830T193614.857+0200 YYYYMMDDhhmmss.sss±hhmm 2018-09-16T12:30-02:00 YYYY-MM-DDhh:mm±hh:mm 2018-09-16T13:15:30Z YYYY-MM-DDhh:mmZ 9/30/18 19:36:14 M/D/YY hh:mm:ss
在数据加载编辑器 中,创建新的部分,然后添加示例脚本并运行它。然后,至少要将结果列中列出的字段添加到应用程序中的表格才能查看结果。
加载脚本
SET FirstWeekDay=0;
SET BrokenWeeks=1;
SET ReferenceDay=0;
SET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun';
SET LongDayNames='Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;Sunday';
SET DateFormat='YYYYMMDD';
SET TimestampFormat='DD/MM/YYYY h:mm:ss[.fff] TT';
Transactions:
Load
*,
Timestamp(transaction_timestamp, 'YYYY-MM-DD hh:mm:ss[.fff]') as LogTimestamp
;
Load * Inline [
transaction_id, transaction_timestamp, transaction_amount, transaction_quantity, discount, customer_id, size, color_code
3750, 2018-08-30, 12423.56, 23, 0,2038593, L, Red
3751, 20180830T193614.857, 5356.31, 6, 0.1, 203521, m, orange
3752, 20180830T193614.857+0200, 15.75, 1, 0.22, 5646471, S, blue
3753, 2018-09-16T12:30-02:00, 1251, 7, 0, 3036491, l, Black
3754, 2018-09-16T13:15:30Z, 21484.21, 1356, 75, 049681, xs, Red
3755, 9/30/18 19:36:14, -59.18, 2, 0.333333333333333, 2038593, M, Blue
];
复制代码到剪贴板
结果
Qlik Sense 表格示出在加载脚本中使用的 TimestampFormat 解释变量的结果。数据集中最后的时间戳不返回正确的日期。
transaction_id transaction_timestamp LogTimeStamp 3750 2018-08-30 2018-08-30 00:00:00 3751 20180830T193614.857 2018-08-30 19:36:14 3752 20180830T193614.857+0200 2018-08-30 17:36:14 3753 2018-09-16T12:30-02:00 2018-09-16 14:30:00 3754 2018-09-16T13:15:30Z 2018-09-16 13:15:30 3755 9/30/18 19:36:14 -
下个加载脚本使用相同的数据集。然而,它使用 SET TimestampFormat='MM/DD/YYYY hh:mm:ss[.fff]' 来匹配第六个时间戳的非 ISO 8601 格式。
在数据加载编辑器 中,将之前的示例脚本替换为下面的一个并运行它。然后,至少要将结果列中列出的字段添加到应用程序中的表格才能查看结果。
加载脚本
SET FirstWeekDay=0;
SET BrokenWeeks=1;
SET ReferenceDay=0;
SET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun';
SET LongDayNames='Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;Sunday';
SET DateFormat='YYYYMMDD';
SET TimestampFormat='MM/DD/YYYY hh:mm:ss[.fff]';
Transactions:
Load
*,
Timestamp(transaction_timestamp, 'YYYY-MM-DD hh:mm:ss[.fff]') as LogTimestamp
;
Load * Inline [
transaction_id, transaction_timestamp, transaction_amount, transaction_quantity, discount, customer_id, size, color_code
3750, 2018-08-30, 12423.56, 23, 0,2038593, L, Red
3751, 20180830T193614.857, 5356.31, 6, 0.1, 203521, m, orange
3752, 20180830T193614.857+0200, 15.75, 1, 0.22, 5646471, S, blue
3753, 2018-09-16T12:30-02:00, 1251, 7, 0, 3036491, l, Black
3754, 2018-09-16T13:15:30Z, 21484.21, 1356, 75, 049681, xs, Red
3755, 9/30/18 19:36:14, -59.18, 2, 0.333333333333333, 2038593, M, Blue
];
复制代码到剪贴板
结果
Qlik Sense 表格示出在加载脚本中使用的 TimestampFormat 解释变量的结果。
transaction_id transaction_timestamp LogTimeStamp 3750 2018-08-30 2018-08-30 00:00:00 3751 20180830T193614.857 2018-08-30 19:36:14 3752 20180830T193614.857+0200 2018-08-30 17:36:14 3753 2018-09-16T12:30-02:00 2018-09-16 14:30:00 3754 2018-09-16T13:15:30Z 2018-09-16 13:15:30 3755 9/30/18 19:36:14 2018-09-16 19:36:14