sql - hive -如果cast(col as timestamp)为零,为什么要删除毫秒数呢?

标签 sql string datetime hadoop hive

我最近注意到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,则忽略最后一位数字。为什么会这样?

最佳答案

这只是一个表示问题。
在时间戳中,就像在数字中一样,值0的最后一个十进制数字没有意义;基本上:

1.230 = 1.23
另一方面,就字符串而言,每个字符以及字符串的长度都很重要:
'1.230' <> '1.23'
您的数据类型转换工作正常。字符串将转换为相关的时间戳值。只是两种数据类型的表示使它们看起来不同。

关于sql - hive -如果cast(col as timestamp)为零,为什么要删除毫秒数呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51432896/

相关文章:

mysql - 从表中选择消息

mysql - 为什么MySQL扫描更新但查找选择

c - PIC18F25K80 通过 USART 发送字符串不起作用

python-3.x - 根据数据框中的日期差异计算下一个事件发生前的天数

MySQL动态排序

sql - 在存储过程中调用存储过程

java - Java中如何将8个字符串一次转换为一个字节写入文件?

java - 使用 split 方法拆分字符串

php - 如何将毫秒添加到 php 中的 Datetime 对象?

javascript - 使用 jQuery 检查当前时间是否在一个时间范围内(24 小时)