sql-server – 从DateTime转换为INT

在我的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

解决方法

编辑:转换为float / int不再适用于最新版本的sql Server.请改用以下内容
select datediff(day,'1899-12-30T00:00:00',my_date_field)
from mytable

请注意,字符串日期应该在unambiguous date format中,以便它不受服务器区域设置的影响.

在旧版本的sql Server中,您可以通过强制转换为float,然后转换为int,从DateTime转换为Integer:

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

(注意:你不能直接转换为int,因为如果你过了中午,MSsql会将值向上舍入!)

如果数据中存在偏移量,则显然可以从结果中添加或减去此值

您可以通过直接向后转换来向另一个方向转换:

select cast(my_integer_date as datetime)
from mytable

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...