2

表达方式

DATEADD("d",- (DAY(GETDATE())) + 1,GETDATE()) 

是正确的,它给了我 2/1/2019 3:45:02 PM

但我希望我的答案与2019-02-01SSIS中的一样

请帮我

4

2 回答 2

0

如果您要获取值2019-02-01(格式yyyy-MM-dd),则应将值转换为字符串并使用以下表达式:

LEFT((DT_WSTR,50)DATEADD("d",- (DAY(GETDATE())) + 1,GETDATE()) ,10)

输出

2019-02-01

基于Cast (SSIS Expression) 官方文档

当字符串转换为 DT_DATE 时,或反之亦然,将使用转换的语言环境。但是,日期采用 YYYY-MM-DD 的 ISO 格式,无论区域设置首选项是否使用 ISO 格式。

如果您需要返回类型的值,DT_Date那么只需添加一个 CAST 操作:

(DT_DATE)LEFT((DT_WSTR,50)DATEADD("d",- (DAY(GETDATE())) + 1,GETDATE()) ,10)

请注意,在 Date 数据类型中没有格式,值的存储方式与它们的可视化方式不同。

输出

2019 年 2 月 1 日凌晨 12:00:00

这相当于

2019 年 2 月 1 日 00:00:00

于 2019-02-22T21:57:26.567 回答
0

出于某种原因,在处理日期方面,SSIS 有点让人头疼。基本上,你必须双重施放它......

(DT_DATE)(DT_DBDATE)DATEADD("d",- (DAY(GETDATE())) + 1,GETDATE())

注:评估值为2/1/2019 12:00:00 AM。但是,当您在 Expression Builder 上单击 OK 时,您将看到显示为 的值2/1/2019

编辑据我所知,无法更改日期格式,即使将其转换为字符串然后返回日期也是如此。我不会认为这是一个问题 - 单独保留内部日期格式,以便后端可以处理它。日期格式应该只关心显示目的,可以在 SQL SELECT 阶段进行操作。

您是否有理由要求更改日期格式以进行后端处理?

于 2019-02-22T20:52:34.457 回答