Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.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
C# 使用C在数据库中的两个日期之间插入数据_C#_Asp.net_Sql Server_Webforms - Fatal编程技术网

C# 使用C在数据库中的两个日期之间插入数据

C# 使用C在数据库中的两个日期之间插入数据,c#,asp.net,sql-server,webforms,C#,Asp.net,Sql Server,Webforms,我需要帮助。我们需要在数据库中使用C在两个日期之间插入数据 例如,我们有两个日历,Calendar1和Calendar2 现在从日历1中,我们选择2018年12月1日 从日历2中,我们选择日期为2018年12月30日 单击Submit按钮时,需要将数据插入数据库 2018年12月1日至2018年12月30日 前 可以使用递归CTE在两个日期之间生成表: with dates as ( select @startdate as dte union all sel

我需要帮助。我们需要在数据库中使用C在两个日期之间插入数据

例如,我们有两个日历,Calendar1和Calendar2

现在从日历1中,我们选择2018年12月1日 从日历2中,我们选择日期为2018年12月30日 单击Submit按钮时,需要将数据插入数据库

2018年12月1日至2018年12月30日


可以使用递归CTE在两个日期之间生成表:

with dates as (
      select @startdate as dte
      union all
      select dateadd(day, 1, dte)
      from dates
      where dte < @enddate
     )
select *
from dates
option (maxrecursion 0);
也就是说,如果您需要为用户界面执行此操作,那么我认为您确实需要一个日历表,每个日期一行。然后你可以简单地做:

select c.dte
from calendar c
where c.dte >= @startdate and c.dte <= @enddate;

我个人更喜欢理货台而不是rCTE这样的东西;对于较大的数据集,理货表往往要快得多:

DECLARE @StartDate date = '20181201',
        @EndDate date = '20181231';

WITH N AS (
    SELECT N
    FROM (VALUES(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL))N(N)),
Tally AS (
    SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) -1 AS I
    FROM N N1, N N2, N N3, N N4) --10000 rows
SELECT DATEADD(DAY, T.I, @StartDate)
FROM Tally T
WHERE DATEADD(DAY, T.I, @StartDate) <= @EndDate;

欢迎你试图解决什么问题?请编辑您的问题并插入您的代码。抱歉,您的问题不清楚。这是在数据库中插入数据还是其他问题。也许添加您迄今为止为解决问题而编写的代码会有所帮助尊敬的先生,现在我编辑了我的问题,请检查
DECLARE @StartDate date = '20181201',
        @EndDate date = '20181231';

WITH N AS (
    SELECT N
    FROM (VALUES(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL))N(N)),
Tally AS (
    SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) -1 AS I
    FROM N N1, N N2, N N3, N N4) --10000 rows
SELECT DATEADD(DAY, T.I, @StartDate)
FROM Tally T
WHERE DATEADD(DAY, T.I, @StartDate) <= @EndDate;