Sql 股票市场样本的临界日期时间函数问题

Sql 股票市场样本的临界日期时间函数问题,sql,sql-server-2008,Sql,Sql Server 2008,您好,我面临一个关键问题,请提出一些解决方案 我的Sql表中有如下记录: Table Name (tbl_rawdata) ID Price DATE 1 20 20/8/2014 2 20 20/8/2013 因此,我们没有创建样本数据和测试所需的实际数据 例:我们需要插入60条与表中相同的记录,但日期会有所不同 ID Price DATE 1 20 20/8/2014 1 20

您好,我面临一个关键问题,请提出一些解决方案

我的Sql表中有如下记录:

Table Name (tbl_rawdata)

ID    Price     DATE

1      20     20/8/2014 

2      20     20/8/2013  
因此,我们没有创建样本数据和测试所需的实际数据

例:我们需要插入60条与表中相同的记录,但日期会有所不同

ID    Price     DATE

1      20     20/8/2014 
1      20     21/8/2014 
1      20     22/8/2014 
-----------------------
1      20     25/8/2014
------------------------ 
1      20     26/8/2014 
1      20     27/8/2014 
1      20     28/8/2014 
这意味着我们需要得到下一个日期,不包括周六和周日,我们需要插入60天

同样,在tbl_rawdata中,我们有大约100个不同的id值,我们需要对所有人重复相同的操作


请帮忙处理这个案子。提前感谢并等待您的回复

如果不需要,您可以从结果中删除dayName:

DECLARE @FirstDate DATETIME
-- You can change @year to any year you desire
SELECT @FirstDate = '20140820'
-- Creating Query to Prepare Year Data
;WITH cte AS (
   SELECT 1 AS ID,
   @FirstDate AS FromDate,
   DATENAME(dw, @FirstDate) AS Dayname
UNION ALL
    SELECT CASE WHEN DayName NOT IN ('Saturday','Sunday') THEN cte.ID + 1
                ELSE cte.ID END AS ID,
    DATEADD(d, 1 ,cte.FromDate),
    DATENAME(dw, DATEADD(d, 1 ,cte.FromDate)) AS Dayname
FROM cte
WHERE ID < 60
)
SELECT ID, 20 AS Price, FromDate AS Date, Dayname
FROM CTE
WHERE DayName NOT IN ('Saturday','Sunday')
试试这个

select id, price,dateadd(day,number,date) from tbl_rawdata as t1, 
master..spt_values as t2 
where type='p' and number<60 and datename(weekday,dateadd(day,number,date)) not in
('saturday','sunday')

试试这样的

DECLARE @Table1 AS TABLE (ID int, Price int, [Date] smalldatetime) 
DECLARE @Table2 AS TABLE (ID int, Price int, [Date] smalldatetime)
INSERT INTO @Table1(ID, Price, [Date]) 
SELECT 1, 20, '2014-08-20 00:00:00.000' UNION SELECT 2, 20, '2013-08-20 00:00:00.000'

DECLARE @DateRange int = 0

WHILE @DateRange < 60
BEGIN
INSERT INTO @Table2
SELECT ID, Price, [Date] + @DateRange
FROM @Table1
SET @DateRange = @DateRange+1
END
DELETE @Table2 WHERE DATEPART(DW,[Date]) in (7,1)

SELECT *
FROM @Table2

请提及您的数据库管理系统。@DIMIT:SQLServer2008r2@patrick例如我不明白,没有喊叫sir@patrick:对不起,先生,它提供了+7天的数据,这是不够的。查询很小,但对于其他一些场景很有用。您需要使用day而不是week参数。我编辑了代码,尝试一下它的星期六和星期天也是,@16484解决方案很好,但基于这一点,我们可以即兴创作一些像星期六和星期天这样的东西吗?我们知道这是股市的假期,但我们可以给一些静态的日子吗?也可以像2014年8月29日是公共假日,我们可以忽略这一天吗,但我需要澄清一下。例如,在股票市场上,不仅是周六和周日,有时我们也会有公共假日,如果我们需要忽略这些手段,我们能做些什么吗?你需要某种日期表,它允许你将天定义为周末、假日或任何你可能想排除的事情。如果你在原来的帖子中包含了这个要求,那会很有帮助的。谢谢@Andrew@Chaitanya Phani,有两个地方设置了要排除的日期,都有这样的条件:DayName不在“星期六”和“星期日”。您可以将其替换为指定要排除的日期的其他条件,如FromDate NOT IN SELECT date FROM tbl_excludedDates@user16484:完美的解决方案,很抱歉在question@Andrew当前位置我是这个论坛的新手,让我学习提问的方式。非常感谢你。