表达方式
DATEADD("d",- (DAY(GETDATE())) + 1,GETDATE())
是正确的,它给了我 2/1/2019 3:45:02 PM
但我希望我的答案与2019-02-01
SSIS中的一样
请帮我
表达方式
DATEADD("d",- (DAY(GETDATE())) + 1,GETDATE())
是正确的,它给了我 2/1/2019 3:45:02 PM
但我希望我的答案与2019-02-01
SSIS中的一样
请帮我
如果您要获取值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
出于某种原因,在处理日期方面,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 阶段进行操作。
您是否有理由要求更改日期格式以进行后端处理?