一、时间计算问题
多表连接查询时,会出现 invalid number 还有其他奇怪的问题,错误原因是 多个表里 时间字段的数据类型不同,有的是 DATE 类型,有的是 TIMESTAMP 类型,用 UNION 语句连接时没有报错,但是用该字段进行一些数学计算时,报错了。
解决方法:统一数据类型。
在 SQL 中,我们可以使用 CAST()
或 CONVERT()
函数将 timestamp
类型转换成 date
类型。例如,对于一个 timestamp
类型的字段 my_timestamp
,我们可以使用以下语句将其转换为 date
类型:
SELECT CAST(my_timestamp AS DATE)
FROM my_table;
或者是:
SELECT CONVERT(DATE, my_timestamp)
FROM my_table;
需要注意的是,转换后的 date
类型会丢失原 timestamp
类型中的时区信息,只保留日期和时间信息。如果需要保留时区信息,可以将其转换为 timestamp with time zone
类型。
如果 timestamp
类型的字段中包含毫秒或微秒等更精确的时间信息,则需要使用类似以下的语句转换为 date
类型:
SELECT CAST(TRUNC(my_timestamp) AS DATE)
FROM my_table;
或者