我想将monthofservice列转换为servicedate列。
例如,如果monthofservice列具有199012,那么我想使用servicedate列以1990-12-01 year-mm-date格式显示/加载数据。我希望日期始终为默认值01。我还希望当monthofservice列为NULL时使servicedate列显示NULL。使用以下代码,当monthofservice为NULL时显示为“-”。
我确定有更好的方法对此进行编码,并且当monthofservice列为NULL时也将servicedate显示为NULL。任何帮助深表感谢!
SELECT monthofservice
,CASE WHEN monthofservice = '' THEN NULL ELSE CAST (concat(substring(monthofservice,1,4),+ '-', substring (MonthofService,5,2)+'-'+ '01')) AS VARCHAR (10)) AS servicedate
FROM transaction
注意:事务表中不存在Servicedate列,因此我使用事务处理中的monthofservice列转换为servicedate,然后使用SSIS包将数据加载到其他目标表中。如果我可以通过select语句提取NULL,那么我认为其他进程也应该这样做工作。
谢谢!
如果服务月份是字符串,则只需执行以下操作:
select convert(date, concat(monthofservice, '01'))
如果您的值错误monthofservice
,请try_convert()
改用。
哦,如果monthofservice
是整数也可以。这是db <>小提琴。
如果年份和月份在单独的列中,我建议datefromparts()
:
select datefromparts(yyyy, mm, 1)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句