在 SSIS 表达式中,我们如何只存储来自 getdate() 的日期
In SSIS expression how can we store only date from getdate()
我想将 getdate()-1 中的日期存储在 SSIS 变量中。
就像我们 运行 sql 查询
select CONVERT(varchar(10),getdate()-1,120)
Output - 2017-11-10
我在表达式中尝试了以下查询。
@[User::Dates] =
(DT_WSTR,4)YEAR(GETDATE())
+ RIGHT ( "0" + (DT_WSTR,2)MONTH(GETDATE()),2)
+ RIGHT ( "0" + (DT_WSTR,2)DAY(GETDATE()),2)
它给我的输出是
20171111
谁能告诉我变量的表达式是什么。我的变量数据类型是字符串
你快到了。
首先,您需要添加破折号(简单的字符串连接)。
其次,获取前一天的语法稍微复杂一些:SSIS不支持GETDATE() - 1
,所以你需要DATEADD("DAY", -1, GETDATE())
.
这是您要查找的内容:
(DT_WSTR, 4) YEAR(DATEADD("DAY", -1, GETDATE()))
+ "-"
+ RIGHT("0" + (DT_WSTR, 2) MONTH(DATEADD("DAY", -1, GETDATE())), 2)
+ "-"
+ RIGHT("0" + (DT_WSTR, 2) DAY(DATEADD("DAY", -1, GETDATE())),2)
解决方案
您可以简单地使用以下表达式来实现:
SUBSTRING( (DT_STR,50, 1256)DATEADD("DAY",-1,GETDATE()) , 1, 10)
它将return 仅使用以下格式的日期2017-11-11
(昨天日期)
说明
When a string is cast to a DT_DATE, or vice versa, the locale of the transformation is used. However, the date is in the ISO format of YYYY-MM-DD, regardless of whether the locale preference uses the ISO format
旁注:其他方法可能有效,但如果日期或月份小于 10
,则使用 datepart 函数 (DATEPART, YEAR, MONTH, DAY
) 时会出现问题另一种日期格式(即 2017-1-3 -> yyyy-M-d 或 2017-10-1 -> yyyy-MM-d)。所以你必须将它们与其他方法一起使用来解决这个问题(即RIGHT("0" + (DT_STR,50,1256)DAY([Column0]),2)
)
我想将 getdate()-1 中的日期存储在 SSIS 变量中。
就像我们 运行 sql 查询
select CONVERT(varchar(10),getdate()-1,120)
Output - 2017-11-10
我在表达式中尝试了以下查询。
@[User::Dates] =
(DT_WSTR,4)YEAR(GETDATE())
+ RIGHT ( "0" + (DT_WSTR,2)MONTH(GETDATE()),2)
+ RIGHT ( "0" + (DT_WSTR,2)DAY(GETDATE()),2)
它给我的输出是
20171111
谁能告诉我变量的表达式是什么。我的变量数据类型是字符串
你快到了。
首先,您需要添加破折号(简单的字符串连接)。
其次,获取前一天的语法稍微复杂一些:SSIS不支持GETDATE() - 1
,所以你需要DATEADD("DAY", -1, GETDATE())
.
这是您要查找的内容:
(DT_WSTR, 4) YEAR(DATEADD("DAY", -1, GETDATE()))
+ "-"
+ RIGHT("0" + (DT_WSTR, 2) MONTH(DATEADD("DAY", -1, GETDATE())), 2)
+ "-"
+ RIGHT("0" + (DT_WSTR, 2) DAY(DATEADD("DAY", -1, GETDATE())),2)
解决方案
您可以简单地使用以下表达式来实现:
SUBSTRING( (DT_STR,50, 1256)DATEADD("DAY",-1,GETDATE()) , 1, 10)
它将return 仅使用以下格式的日期2017-11-11
(昨天日期)
说明
When a string is cast to a DT_DATE, or vice versa, the locale of the transformation is used. However, the date is in the ISO format of YYYY-MM-DD, regardless of whether the locale preference uses the ISO format
旁注:其他方法可能有效,但如果日期或月份小于 10
,则使用 datepart 函数 (DATEPART, YEAR, MONTH, DAY
) 时会出现问题另一种日期格式(即 2017-1-3 -> yyyy-M-d 或 2017-10-1 -> yyyy-MM-d)。所以你必须将它们与其他方法一起使用来解决这个问题(即RIGHT("0" + (DT_STR,50,1256)DAY([Column0]),2)
)