expresssion
DATEADD("d",- (DAY(GETDATE())) + 1,GETDATE())
是正确的,它给了我2/1/2019 3:45:02 PM
,但我希望我的答案在SSIS中为2019-02-01
请帮助我
出于某种原因,SSIS在处理日期时有点痛苦。基本上,您必须加倍投射...
(DT_DATE)(DT_DBDATE)DATEADD("d",- (DAY(GETDATE())) + 1,GETDATE())
注意:评估的值为2/1/2019 12:00:00 AM
。但是,当您单击表达式构建器上的确定时,您将看到显示为2/1/2019
的值。
编辑据我所知,即使将其转换为字符串然后返回日期,也无法更改日期格式。我不会认为这是一个问题 - 单独使用内部日期格式,以便后端可以处理。对于显示目的,日期格式应真正关注任何问题,可以在SQL选择阶段进行操作。
是否有原因要求更改日期格式以进行后端处理?
如果要获得值2019-02-01
(格式yyyy-MM-dd
),则应将值转换为字符串并使用以下表达式:
LEFT((DT_WSTR,50)DATEADD("d",- (DAY(GETDATE())) + 1,GETDATE()) ,10)
输出
2019-02-01
基于演员表(SSIS表达式)官方文档:
将字符串施放到dt_date,反之亦然时,使用转换的位置。但是,该日期为Yyyy-MM-DD的ISO格式,无论该语言环境偏好是否使用ISO格式。
如果您需要类型DT_Date
的返回值,则只需添加铸件操作:
(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