sql - 在 SSIS 表达式中,我们如何只存储 getdate() 中的日期

标签 sql sql-server date ssis etl

我想将 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

有人可以告诉我变量的表达式是什么吗?我的变量数据类型是字符串

最佳答案

解决方案

您可以简单地使用以下表达式来实现此目的:

 SUBSTRING( (DT_STR,50, 1256)DATEADD("DAY",-1,GETDATE()) , 1, 10)

它将仅返回以下格式的日期 2017-11-11 (昨天日期)

说明

根据这个Microsoft Document

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


旁注:其他方法可能有效,但如果日期或月份小于 ,则使用日期部分函数(DATEPART、YEAR、MONTH、DAY)时会出现问题10 您可能有其他日期格式(即 2017-1-3 -> yyyy-M-d 或 2017-10-1 -> yyyy-MM-d)。因此,您必须将它们与其他方法结合使用来解决该问题(即 RIGHT("0"+ (DT_STR,50,1256)DAY([Column0]),2))

关于sql - 在 SSIS 表达式中,我们如何只存储 getdate() 中的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47235107/

相关文章:

python - SQLAlchemy 中关系的高效查询

mysql查询选择父子递归

SQL:如何使用仅代表一周中某些天的数据显示一周中的完整 7 天?

sql-server - 我怎么知道为什么我的查询需要这么长时间?

MySQL 数字类型

date - 如何在 Elixir 中解析 DateTime?

sql - 只允许将 3 行添加到表中以获取特定值

sql-server - SSIS ETL 在通过 SQL 代理作业执行时不会从共享点选取文件

sql-server - SSIS 错误 "To run a SSIS package outside of SQL Server Data Tools you must install Standard Edition (64-bit) of Integration Services "

C# MySQL LINQ 日期时间转换