Skip to content

Commit 2f2d220

Browse files
committed
Add support for parsing timestamp strings in data query results
This is added so doing data queries using runCommand works, but it should be avoided
1 parent 8154657 commit 2f2d220

File tree

2 files changed

+41
-2
lines changed

2 files changed

+41
-2
lines changed

influxdb-client/SeriesResult.m

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,16 @@
125125

126126
% Check if the first field is the time
127127
if strcmp('time', fields{1})
128-
timestamps = cell2mat(celled(:, 1));
129-
time = TimeUtils.toDatetime(timestamps, epoch);
128+
time_column = celled(:, 1);
129+
if isnumeric(time_column{1})
130+
timestamps = cell2mat(time_column);
131+
time = TimeUtils.toDatetime(timestamps, epoch);
132+
elseif ischar(time_column{1})
133+
parse = @TimeUtils.parseTimestamp;
134+
time = cellfun(parse, time_column);
135+
else
136+
error('unsupported time type');
137+
end
130138
fields = fields(2:end);
131139
celled = celled(:, 2:end);
132140
else

influxdb-client/TimeUtils.m

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,37 @@
3737
'ConvertFrom', 'posixtime', 'TimeZone', 'local');
3838
end
3939

40+
% Convert string timestamp to a datetime
41+
function dtime = parseTimestamp(timestr)
42+
switch length(timestr)
43+
case 20
44+
format = 'yyyy-MM-dd''T''HH:mm:ss''Z''';
45+
case 22
46+
format = 'yyyy-MM-dd''T''HH:mm:ss.S''Z''';
47+
case 23
48+
format = 'yyyy-MM-dd''T''HH:mm:ss.SS''Z''';
49+
case 24
50+
format = 'yyyy-MM-dd''T''HH:mm:ss.SSS''Z''';
51+
case 25
52+
format = 'yyyy-MM-dd''T''HH:mm:ss.SSSS''Z''';
53+
case 26
54+
format = 'yyyy-MM-dd''T''HH:mm:ss.SSSSS''Z''';
55+
case 27
56+
format = 'yyyy-MM-dd''T''HH:mm:ss.SSSSSS''Z''';
57+
case 28
58+
format = 'yyyy-MM-dd''T''HH:mm:ss.SSSSSSS''Z''';
59+
case 29
60+
format = 'yyyy-MM-dd''T''HH:mm:ss.SSSSSSSS''Z''';
61+
case 30
62+
format = 'yyyy-MM-dd''T''HH:mm:ss.SSSSSSSSS''Z''';
63+
otherwise
64+
error('parseTimestamp:unknownFormat', ...
65+
'unknown timestamp format: %s', timestr);
66+
end
67+
dtime = datetime(timestr, 'InputFormat', format, 'TimeZone', 'UTC');
68+
dtime.TimeZone = 'local';
69+
end
70+
4071
% Validate a precision
4172
function validatePrecision(precision)
4273
assert(any(strcmp(precision, TimeUtils.PRECISIONS)), ...

0 commit comments

Comments
 (0)