添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

从DateTime转换为INT

10 人关注

在我的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
1 个评论
SELECT CAST(CAST('20090101' AS DATETIME) AS INT) + 2?
sql-server
ssis
sql-server-2008-r2
Raj More
Raj More
发布于 2011-04-01
3 个回答
Steve Mayne
Steve Mayne
发布于 2011-04-01
已采纳
0 人赞同

编辑:在最近版本的SQL Server中,向float/int的投递不再有效。请使用以下方法代替。

select datediff(day, '1899-12-30T00:00:00', my_date_field)
from mytable

注意字符串日期应该是一个明确的日期格式,这样它就不会受到你的服务器区域设置的影响。

在旧版本的SQL Server中,你可以通过转换为浮点数,然后再转换为整数,将DateTime转换为整数。

select cast(cast(my_date_field as float) as int)
from mytable

(注意:你不能直接投给一个int,因为如果你过了中午,MSSQL就会把值取整!)

如果你的数据中有一个偏移量,你显然可以从结果中加上或减去它

你可以从另一个方向转换,直接向后投。

select cast(my_integer_date as datetime)
from mytable
OP中没有任何时间成分(至少显示的是)。 datetime 被存储为2个ints,所以你也可以铸成二进制,并将前4个字节铸成int。 SELECT CAST(substring(CAST(CAST('20090101 15:00:00' AS DATETIME) AS BINARY(8)),1,4) AS INT)
没错--但安全总比遗憾好。
它不起作用!对于日期格式,它抛出错误:"不允许从数据类型date到float的明确转换。"对于datetime,它抛出 "当从字符字符串转换日期和/或时间时,转换失败。"
你使用的是哪个版本的SQL Server @Muflix?
Joel Coehoorn
Joel Coehoorn
发布于 2011-04-01
0 人赞同

选择 DATEDIFF(dd, '12/30/1899', mydatefield)