我的SSIS包中有一个变量。
@LastFridayDateTime = Datetime Datatype = DATEADD("hh",17,(DT_DBTIMESTAMP) ( (DT_STR,30,1252) (DT_DBDATE) (DATEADD("dd", -1 - (DATEPART("dw", getdate()) % 7), getdate()) ) ) )
这给了我一个值= 6/14/2019 5:00:00 PM
现在,我正在尝试对SSIS查找表达式使用动态Select查询。 为此,请在控制流中单击“数据流任务”->“属性”->“表达式”-> [Lookup] .sql命令,然后将“选择”查询绑定。
"SELECT No, Date_tran
FROM TABLE
WHERE Date_tran >= " + (DT_STR,20,1252) @[User::LastFridayDateTime]
评估为
SELECT No, Date_tran
FROM TABLE
WHERE Date_tran >= 6/14/2019 5:00:00 PM
因此,我猜由于下午5:00:00而无法正常工作。 我的问题是 我希望此日期的格式为“ 6/14/2019 5:00:00”,而不是6/14/2019 5:00:00 PM 以便查询可以编译和执行。
答案 0 :(得分:1)
我认为您只需要在表达式中的datetime值周围加上单引号即可。
"SELECT No, Date_tran
FROM TABLE
WHERE Date_tran >= '" + (DT_STR,20,1252)@[User::LastFridayDateTime] + "'"
编辑:当然,您需要先将datetime
变量强制转换为DT_DBTIMESTAMP
,然后再将其强制转换为字符串。我是否提到我对67种不同的SSIS数据类型有多爱?
这应该看起来似乎很荒谬:
"SELECT No, Date_tran
FROM TABLE
WHERE Date_tran >= '" + (DT_STR,20, 1252)(DT_DBTIMESTAMP) @[User::LastFridayDateTime] + "'"
答案 1 :(得分:0)
尝试以下命令:
Dictionary<string, Dictionary<string, int>> results = intents.ToDictionary(
item => item.Item1,
item => item.Item2.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries)
.Select(x => x.Trim())
.GroupBy(x => x)
.ToDictionary(group => group.Key, group => group.Count()));
如果foreach (var item in results)
{
Console.WriteLine(item.Key + Environment.NewLine +
string.Join(Environment.NewLine, item.Value.Select(v => $" - {v.Key}: {v.Value}")) +
Environment.NewLine);
}
不起作用,您可以参考以下文章以获取相关的格式编号:
OR
"SELECT No, Date_tran
FROM TABLE
WHERE Date_tran >= CONVERT(DATETIME,'" + (DT_STR,20,1252) @[User::LastFridayDateTime] + "',102)"