Raj*_*ore 9 sql-server ssis sql-server-2008-r2
在我的SSIS包中,我必须将DateTime中的值转换为相应的INTEGER值.提供了以下示例.
关于如何转换这些的任何想法?
DATETIME INT
--------- ----
1/1/2009 39814
2/1/2009 39845
3/1/2009 39873
4/1/2009 39904
5/1/2009 39934
6/1/2009 39965
7/1/2009 39995
8/1/2009 40026
9/1/2009 40057
10/1/2009 40087
11/1/2009 40118
12/1/2009 40148
1/1/2010 40179
2/1/2010 40210
3/1/2010 40238
4/1/2010 40269
5/1/2010 40299
6/1/2010 40330
Run Code Online (Sandbox Code Playgroud)
Ste*_*yne 16
编辑:转换为float/int不再适用于最新版本的SQL Server.请改用以下内容:
select datediff(day, '1899-12-30T00:00:00', my_date_field)
from mytable
Run Code Online (Sandbox Code Playgroud)
请注意,字符串日期应采用明确的日期格式,以便它不受服务器区域设置的影响.
在旧版本的SQL Server中,您可以通过强制转换为float,然后转换为int,从DateTime转换为Integer:
select cast(cast(my_date_field as float) as int)
from mytable
Run Code Online (Sandbox Code Playgroud)
(注意:您不能直接转换为int,因为如果您在中午过去,MSSQL会将值向上舍入!)
如果数据中存在偏移量,则显然可以从结果中添加或减去此值
您可以通过直接向后转换来向另一个方向转换:
select cast(my_integer_date as datetime)
from mytable
Run Code Online (Sandbox Code Playgroud)
Joe*_*orn 10
选择DATEDIFF(dd,'12/30/1899',mydatefield)
| 归档时间: |
|
| 查看次数: |
89435 次 |
| 最近记录: |