Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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中获取两个日期之间的开始日期和结束日期_Sql_Sql Server 2008_Sqldatetime - Fatal编程技术网

如何在sql server中获取两个日期之间的开始日期和结束日期

如何在sql server中获取两个日期之间的开始日期和结束日期,sql,sql-server-2008,sqldatetime,Sql,Sql Server 2008,Sqldatetime,大家好,我正在研究某种会计系统,遇到了一些困难。阿卜杜勒·拉希德已经在这个网站上回答了这个问题 这是密码 declare @sDate datetime, @eDate datetime select @sDate = '2013-02-21', @eDate = '2013-04-25'; with CTE_TEST as ( select @sDate SDATE, DATEADD(s, - 1, DATEADD(mm, DATEDIFF(m, 0

大家好,我正在研究某种会计系统,遇到了一些困难。阿卜杜勒·拉希德已经在这个网站上回答了这个问题

这是密码

declare @sDate datetime,
    @eDate datetime

select @sDate = '2013-02-21',
    @eDate = '2013-04-25';

with CTE_TEST
as (
    select @sDate SDATE,
        DATEADD(s, - 1, DATEADD(mm, DATEDIFF(m, 0, @sDate) + 1, 0)) EDATE

    union all

    select EDATE + 1,
        DATEADD(s, - 1, DATEADD(mm, DATEDIFF(m, 0, DATEADD(MONTH, 1, SDATE)) + 1, 0))
    from CTE_TEST C
    where DATEADD(MONTH, 1, SDATE) < DATEADD(s, - 1, DATEADD(mm, DATEDIFF(m, 0, @eDate) + 1, 0))
    )
select DATENAME(MONTH, SDATE) MNAME,
    SDATE, (case when EDATE > @eDate then @eDate else EDATE end) EDATE
from CTE_TEST

代码工作得很好,就像我想要的一样。但是我想将结果插入到一个新表中。如何做到这一点?

您的预期输出是什么?@Abdul RasheedPlease中的代码请确保标题与您的实际问题相匹配。对于它的价值,递归CTE是一个简单的问题。此外,如果您想要一个连续日期的永久表,您可能只需要创建一个@RedietZewdu,如果它有效,您可以将其作为答案进行评分吗
CREATE TABLE T(MNAME VARCHAR(20),SDATE DATETIME,EDATE DATETIME)  

      IF OBJECT_ID ('tempdb..#T') IS NOT  NULL
        DROP TABLE #T

          declare @sDate datetime,
            @eDate datetime
            select  @sDate = '2013-02-21',
            @eDate = '2013-04-25'
            ;WITH CTE_TEST AS (
            SELECT @sDate SDATE,DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@sDate)+1,0)) EDATE
            UNION ALL
            SELECT  EDATE+1,DATEADD(s,-1,DATEADD(mm,DATEDIFF(m,0,DATEADD(MONTH,1,SDATE))+1,0))
            FROM    CTE_TEST C WHERE DATEADD(MONTH,1,SDATE) <   DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@eDate)+1,0))
    )   
             SELECT DATENAME(MONTH,SDATE) MNAME,SDATE,(CASE WHEN EDATE > @eDate THEN  @eDate ELSE EDATE END) EDATE INTO #T FROM CTE_TEST 



INSERT INTO T(  MNAME,
                SDATE,
                EDATE)
Select MNAME,
SDATE,
EDATE from #T