Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 我想将DATEADD(“d”和“-(DAY(GETDATE())+;1,GETDATE())转换为YYYY-MM-DD格式_Sql Server_Ssis_Expression_Etl_Derived Column - Fatal编程技术网

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


将日期格式更改为该格式的唯一方法是将其设置为字符串。此外,您还应保存演示层的格式。您希望输出显示为这种方式吗?数据是一个时间戳——它没有格式。