如何在单个按钮点击的每个月份日期插入数据库中的记录?

时间:2011-03-13 08:08:39

标签: vb.net visual-studio-2008 sql-server-2005

  

可能重复:
  how to insert record into database on single button click from date to todate ?

我有两个文本框.... textbox1和textbox2

textbox1 ==从日期中选择 textbox2 ==选择日期

如果用户从textbox1中的日期选择为2011年5月1日,则在textbox2中选择2011年5月30日

然后将从01-MAy-2011到2011年5月30日的所有日期插入到mssql2005数据库的每一行......

例子。 。 :

IN数据库Table1结构......

ID           Date
1            01-MAy-2011
2            02-MAy-2011
3            03-MAy-2011
4            04-MAy-2011
5            05-MAy-2011

依此类推至2011年5月30日

1 个答案:

答案 0 :(得分:1)

使用递归CTE?

DECLARE @date1 datetime, @date2 datetime --use date with SQL Server 2008
SELECT @date1 = '20110501', @date2 = '20110530' 

;WITH cDateRange AS
(
   SELECT
      @date1 AS TheDate
   UNION ALL
   SELECT
      DATEADD(day, 1, TheDate) -- keep in the date/time domain. No implicit CASTs
   FROM
      cDateRange
   WHERE
      DATEADD(day, 1, TheDate) <= @date2
      -- no need: we are comparing same datatypes DATEDIFF(day, DATEADD(day, 1, TheDate), @date2) >= 0
)
INSERT mytable (ID, TheDate)
SELECT 
    --Use ROW_NUMBER to deal with month boundaries
    ROW_NUMBER() OVER (ORDER BY TheDate) AS [id],
    TheDate
FROM
    cDateRange