从日期时间转换为 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
In my SSIS package, I have to converting values from DateTime to a corresponding INTEGER value. The following sample has been provided.
Any ideas as to how I can convert these?
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
编辑:在最新版本的 SQL Server 中,转换为 float/int 不再有效。请改用以下内容:
请注意,字符串日期应采用明确的日期格式,以便它不受服务器区域设置的影响。
在旧版本的 SQL Server 中,您可以通过先转换为浮点数,然后再转换为 int,将 DateTime 转换为 Integer:(
注意:您不能直接转换为 int,因为如果您中午过去了!)
如果您的数据中有偏移,您显然可以从结果中添加或减去该偏移
您可以通过直接向后转换来向另一个方向进行转换:
EDIT: Casting to a float/int no longer works in recent versions of SQL Server. Use the following instead:
Note the string date should be in an unambiguous date format so that it isn't affected by your server's regional settings.
In older versions of SQL Server, you can convert from a DateTime to an Integer by casting to a float, then to an int:
(NB: You can't cast straight to an int, as MSSQL rounds the value up if you're past mid day!)
If there's an offset in your data, you can obviously add or subtract this from the result
You can convert in the other direction, by casting straight back:
或者,一旦它已经在 SSIS 中,您可以创建一个派生列(作为某些数据流任务的一部分):
但您必须进行测试以进行双重检查。
Or, once it's already in SSIS, you could create a derived column (as part of some data flow task) with:
But you'd have to test to doublecheck.
如果您想转换为
int
并且知道日期的样式,例如104
表示31.12.2024
,那么您可以使用convert(date, my_date, 104)
转换为默认日期格式2024-12-31
,将其设为char(10)
,然后将'-'
替换为''
so 并将其设为int
。但这可以缩短。转换为 char 本身也可以获得日期样式,请参阅转换后在 SQL Server 中将日期格式化为 105:
输出:
'20241231'
只需要转换为
int
:输出是整数
20241231
。If you want to convert to an
int
and if you know the style of the date, like here104
for31.12.2024
, then you can convert to the default date format2024-12-31
withconvert(date, my_date, 104)
, make this achar(10)
, and then replace'-'
with''
so and make that anint
.But this can be made shorter. The conversion to char itself can get a date style as well, see format date to 105 in SQL Server after casting:
Output:
'20241231'
And this only needs to be converted to
int
:Output is the integer
20241231
.