Может быть, попытаться преобразовать его в NVarChar. Ниже приведен пример того, как вы можете сделать это в следующем формате гггг-мм-дд:
SELECT
Concat(DateName(yyyy, SourceTimestamp),'-',
CAST(CASE
WHEN LEN(CAST(DATEPART(mm,SourceTimestamp) AS NVARCHAR(MAX))) > 1
THEN CAST(DATEPART(mm,SourceTimestamp) AS NVARCHAR(MAX))
ELSE Concat('0', CAST(DATEPART(mm,SourceTimestamp) AS NVARCHAR(MAX)))
END AS NVARCHAR(MAX)),
'-',
CAST(CASE
WHEN LEN(CAST(DATEPART(dd,SourceTimestamp) AS NVARCHAR(MAX))) > 1
THEN CAST(DATEPART(dd,SourceTimestamp) AS NVARCHAR(MAX))
ELSE Concat('0', CAST(DATEPART(dd,SourceTimestamp) AS NVARCHAR(MAX)))
END AS NVARCHAR(MAX))) as NewDate
INTO
table1
FROM
esp32
Аналогичный пример, который вы можете применить, чтобы получить дату в формате чч: мм.
Обновление
Вы можете добавить функцию UDF в качестве другого альтернативного решения, которое будет возвращать значение в нужном формате. Например, ваш NewDate UDF будет выглядеть (и возвращает строку):
// Sample UDF which returns sum of two values.
function main(arg1) {
'use strict';
var date = new Date(arg1);
var yearString = date.getFullYear().toString();
var month = date.getMonth() + 1;
var day = date.getDate();
var monthString = month < 10 ? "0" + month.toString() : month.toString();
var dayString = day < 10 ? "0" + day.toString() : day.toString();
return yearString + '-' + monthString + '-' + dayString;
}
И запрос, который использует эту функцию:
Для времени - функция NewTime:
function main(arg1) {
'use strict';
var date = new Date(arg1);
var hour = date.getHours();
var minutes = date.getMinutes();
var hoursString = hour < 10 ? "0" + hour.toString() : hour.toString();
var minutesString = minutes < 10 ? "0" + minutes.toString() : minutes.toString();
return hoursString + ":" + minutesString;
}
И запрос:
SELECT UDF.NewDate(system.Timestamp), UDF.NewTime(system.Timestamp)
INTO table1
FROM esp32