cast 为什么不支持转bigint
时间: 2024-04-29 16:20:12 浏览: 17
CAST 不支持将所有类型转换为 BIGINT 的原因是因为一些类型的值可能太大,无法存储在 BIGINT 中。例如,如果您尝试将 DECIMAL 值转换为 BIGINT,而 DECIMAL 值太大,超出了 BIGINT 的范围,则会出现错误。另外,一些类型,如VARCHAR,必须包含纯数字才能转换为 BIGINT。如果包含非数字字符,则会出现错误。因此,CAST 不支持将所有类型转换为 BIGINT。
相关问题
pgsql将指定列varcha转换为bigint或者int
在 PostgreSQL 中,可以使用 CAST 函数将 varchar 列转换为 bigint 或 int 类型。具体语法如下:
将 varchar 转换为 bigint:
```
SELECT CAST(column_name AS BIGINT) FROM table_name;
```
将 varchar 转换为 int:
```
SELECT CAST(column_name AS INTEGER) FROM table_name;
```
其中,`column_name` 是要转换的列名,`table_name` 是包含该列的表名。请注意,如果 varchar 列包含不能转换为数字的值,将会导致错误。因此,在转换之前,最好先确保所有的值都可以转换为数字。
在hive执行select from_unixtime(cast('1679546406051' as bigint),'yyyyMMdd')的结果是551920915,不是我想要的年月日,怎么样能得到正确的年月日
在执行select from_unixtime(cast('1679546406051' as bigint),'yyyyMMdd')时,结果为551920915,这是因为时间戳的单位是毫秒,而from_unixtime函数的参数是秒数。因此,正确的做法是将毫秒转换为秒,然后再进行格式化。可以使用以下语句来得到正确的年月日:
```
select from_unixtime(cast('1679546406.051' as double),'yyyyMMdd');
```
结果为:20220722
注意:在将毫秒转换为秒时,需要将毫秒数除以1000得到秒数,并将结果转换为double类型。