[英]Casting columns in SQL Server for SSIS package purpose
我坚持在SQL Server中投射数据。 我正在使用SSIS包将数据从SQL Server传输到Oracle数据库,而在Oracle中,我有以下类型的列:
Registered_hours: number(3,1)
Approved_hours: number(4,2)
代表半个小时的全部时间。 我的意思是前:3.5小时
在我的SQL Server数据库中,我有这些列,但我存储的是分钟而不是几小时。 所以我有ex:480(8小时)的价值。
Registered_hours: int
Approved_hours: int
如何正确转换/转换此值? 例如:在SQL Server中,我有510分钟,相当于8.5小时。 我需要在转换后获得此值。
您可以使用Derived Column Transformation
使用以下表达式添加派生列(小时=分钟/ 60)
我使用(DT_NUMERIC,10,0)
因为Registered_hours / 60
返回没有它的整数值
(DT_NUMERIC,3,1)((DT_NUMERIC,10,0)Registered_hours / 60)
和
(DT_NUMERIC,4,2)((DT_NUMERIC,10,0)Approved_hours/ 60)
参考
据我所知,你想转换(例如)510到8.5。 如果是这样的话,这会有什么好处吗?
您只需要最后一个转换后的值,但我选择一步一步地执行此操作,以便您了解为什么以及如何执行此操作。
SQL> with test as (select 65 minutes from dual union
2 select 480 from dual union
3 select 510 from dual)
4 select minutes,
5 trunc(minutes / 60) hours,
6 round((minutes - (trunc(minutes / 60) * 60)) / 60, 2) hours_add,
7 --
8 trunc(minutes / 60) +
9 round((minutes - (trunc(minutes / 60) * 60)) / 60, 2) converted
10 from test;
MINUTES HOURS HOURS_ADD CONVERTED
---------- ---------- ---------- ----------
65 1 ,08 1,08
480 8 0 8
510 8 ,5 8,5
SQL>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.