我想将 DATEADD( "d" ,- (DAY(GETDATE())) + 1,GETDATE()) 转换为 YYYY-MM-DD 格式



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

最新更新