Sql server 我想将DATEADD(“d”和“-(DAY(GETDATE())+;1,GETDATE())转换为YYYY-MM-DD格式
表达Sql server 我想将DATEADD(“d”和“-(DAY(GETDATE())+;1,GETDATE())转换为YYYY-MM-DD格式,sql-server,ssis,expression,etl,derived-column,Sql Server,Ssis,Expression,Etl,Derived Column,表达 DATEADD("d",- (DAY(GETDATE())) + 1,GETDATE()) 是正确的,它给了我 2019年2月1日下午3:45:02 但我希望我的答案是SSIS中的2019-02-01 请帮助我出于某种原因,SSIS在处理日期时有点麻烦。基本上,你必须加倍施放 (DT_DATE)(DT_DBDATE)DATEADD("d",- (DAY(GETDATE())) + 1,GETDATE()) 注:评估值为2/1/2019 12:00:00 AM。但是,当您在表达式生成器
DATEADD("d",- (DAY(GETDATE())) + 1,GETDATE())
是正确的,它给了我
2019年2月1日下午3:45:02
但我希望我的答案是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
(格式yyy-MM-dd
),则应将值转换为字符串并使用以下表达式:
LEFT((DT_WSTR,50)DATEADD("d",- (DAY(GETDATE())) + 1,GETDATE()) ,10)
输出
2019-02-01
根据:
当字符串转换为DT_日期时,或者转换为DT_日期时,将使用转换的区域设置。但是,无论区域设置首选项是否使用ISO格式,日期都是YYYY-MM-DD的ISO格式
如果需要类型为DT_Date
的返回值,则只需添加一个强制转换操作:
(DT_DATE)LEFT((DT_WSTR,50)DATEADD("d",- (DAY(GETDATE())) + 1,GETDATE()) ,10)
请注意,在日期数据类型中没有格式设置,值的存储方式与它们的可视化方式不同
输出
2019年2月1日12:00:00上午
这相当于
2019年2月1日00:00:00
将日期格式更改为该格式的唯一方法是将其设置为字符串。此外,您还应保存演示层的格式。您希望输出显示为这种方式吗?数据是一个时间戳——它没有格式。