蜂巢-为什么cast(col as timestamp)删除毫秒数(如果为零)?

时间:2018-07-19 23:08:40

标签: sql hadoop hive type-conversion

我最近注意到Hive的以下问题,但是找不到相应的HIVE票证,因此想对此进行交叉检查。

我有一个字符串类型的列,它实际上是yyyy-MM-dd HH:mm:ss.SSS格式的时间戳。我将此列转换为时间戳类型,如下所示:

select my_str_col, cast(my_str_col as timestamp) as my_timestamp_col from my_table;

以上查询的结果如下: enter image description here

您可以看到,在强制转换的版本中,如果最后一位数字为0,则会忽略最后一位数字。为什么会这样?

1 个答案:

答案 0 :(得分:0)

这只是一个表示问题。

在时间戳中,就像在数字中一样,值function updateChartRows() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheetOriginal = ss.getSheetByName("sheet1"); var sheetChart = ss.getSheetByName("sheet2"); var filterValue = "someValue"; // 1. Retrieve the values from "sheet1". var srcValues = sheetOriginal.getDataRange().getValues(); // 2. Retrieve the filtered values. var dstValues = srcValues.reduce((ar, e) => { if (e.some(f => f === filterValue)) ar.push(e.splice(0, 3)); return ar; }, []); // 3. Put the filtered values to "sheet2". sheetChart.getRange(3, 1, dstValues.length, dstValues[0].length).setValues(dstValues); } 的最后一个十进制数字没有意义;基本上:

0

另一方面,对于 string 而言,每个字符以及字符串的长度都很重要:

1.230 = 1.23

您的数据类型转换工作正常。字符串将转换为相关的时间戳值。只是两种数据类型的表示使它们看起来不同。