Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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 财务期间的日期-时间转换_Sql_Sql Server - Fatal编程技术网

Sql 财务期间的日期-时间转换

Sql 财务期间的日期-时间转换,sql,sql-server,Sql,Sql Server,我们在系统中有一个财政期间“201801”,如何将其转换为(2018年4月1日),其中(2018)是年,(01)是财政期间,但不是4月1日 so example 201801 - 01/04/2018 201802 - 01/05/2018 201803 - 01/06/2018 201803 - 01/07/2018 201803 - 01/08/2018 201803 - 01/09/2018 201803 - 01/10/2018 201803 - 01/11/2018

我们在系统中有一个财政期间“201801”,如何将其转换为(2018年4月1日),其中(2018)是年,(01)是财政期间,但不是4月1日

 so example
 201801 - 01/04/2018
 201802 - 01/05/2018
 201803 - 01/06/2018
 201803 - 01/07/2018
 201803 - 01/08/2018
 201803 - 01/09/2018
 201803 - 01/10/2018
 201803 - 01/11/2018
 201803 - 01/12/2018
 201803 - 01/01/2019
 201803 - 01/02/2019
 201803 - 01/03/2019
我正在使用MSSQL和SSMS

您可以添加3个月:

select dateadd(month, 3, datefromparts(left(period, 4), right(period, 2), 1)) as period_start

您可以尝试以下代码:

DECLARE @a INT
SET @a = '201802'
SELECT DATEADD(MONTH, 3, CONVERT(DATETIME,CONCAT(@a,'01')))
为201802获得的输出:

2018-05-01 00:00:00.000

PS:这仅在跨度相差3个月时有效。(1-4月)

那么,你的月份是从哪里来的?i、 e.1-12。我们是否假设任何给定的年份/期间只有12行?周期是如何分开的?为什么03重复了这么多次?数据似乎不一致。03跨越多个月您的问题是2018年4月1日还是1月4日?谢谢,这正是我想要的:)您是Legend@RegChand . . . 您是否有理由不接受此答案?是的,因为从公式中删除0后,我的日期与转换为日期的期间完全相同,添加3后,我的财务期间即从4月开始。此外,我不能使用@a指定静态周期,因此这对我来说非常适合