表达
DATEADD("d",- (DAY(GETDATE())) + 1,GETDATE())
是正确的,它给了我 2019/2/1下午3:45:02
但是我希望我的答案在SSIS中为2019-02-01
请帮助我
答案 0 :(得分:1)
如果要获取值2019-02-01
(格式为yyyy-MM-dd
),则应将值转换为字符串并使用以下表达式:
LEFT((DT_WSTR,50)DATEADD("d",- (DAY(GETDATE())) + 1,GETDATE()) ,10)
输出
2019-02-01
基于Cast (SSIS Expression) official documentation:
将字符串强制转换为DT_DATE或反之亦然时,将使用转换的语言环境。但是,无论区域设置首选项是否使用ISO格式,日期都采用YYYY-MM-DD的ISO格式。
如果您需要返回类型为DT_Date
的返回值,则只需添加CAST操作即可:
(DT_DATE)LEFT((DT_WSTR,50)DATEADD("d",- (DAY(GETDATE())) + 1,GETDATE()) ,10)
请注意,在“日期”数据类型中,没有格式设置,值的存储方式与可视化方式不同。
输出
2/1/2019 12:00:00 AM
等同于
2/1/2019 00:00:00
答案 1 :(得分:0)
由于某种原因,在处理日期时,SSIS有点麻烦。基本上,您必须对其进行双重铸造...
(DT_DATE)(DT_DBDATE)DATEADD("d",- (DAY(GETDATE())) + 1,GETDATE())
注意:评估值为2/1/2019 12:00:00 AM
。但是,当您在Expression Builder上单击“确定”时,您将看到显示为2/1/2019
的值。
编辑据我所知,即使将日期格式转换为字符串然后返回日期,也无法更改日期格式。我不会认为这是一个问题-不用理会内部日期格式,以便后端可以处理它。日期格式实际上仅是出于显示目的的考虑,可以在SQL SELECT阶段进行操作。
是否出于某种原因需要更改日期格式以进行后端处理?