Tsql生成序列、日期序列

--方法1
SET NOCOUNT ON
USE tempdb
GO
IF OBJECT_ID(‘dbo.nums‘)IS NOT NULL
DROP TABLE dbo.nums;
GO
CREATE TABLE dbo.nums(n INT NOT NULL PRIMARY KEY);
DECLARE @max AS INT,@rc AS INT
SET @max=1000000
SET @rc=1
INSERT INTO nums VALUES (1);
WHILE @rc*2<=@max
BEGIN
    INSERT INTO nums SELECT n+@rc FROM nums;
    SET @rc=@rc*2
END
--SELECT [email protected] FROM nums WHERE [email protected]<[email protected]

GO
DECLARE @s AS DATETIME,@e AS DATETIME
SET @s=‘20140501‘
SET @e=‘20141231‘
SELECT @s+n-1 AS dt FROM nums WHERE n<=DATEDIFF(DAY,@s,@e)+1
SELECT * FROM nums  WHERE n<10
GO
--方法2
IF object_id(‘fn_nums‘) IS NOT NULL
BEGIN
    PRINT ‘Dropping function fn_nums‘
    DROP FUNCTION fn_nums
    IF @@ERROR = 0 PRINT ‘Function fn_nums dropped‘
END
go

CREATE FUNCTION fn_nums
(
    @n AS BIGINT
)
RETURNS TABLE
    AS
RETURN
WITH
    L0 AS (SELECT 1 AS c UNION ALL SELECT 1),
    L1 AS (SELECT 1 AS c FROM L0 AS a,L0 AS b),
    L2 AS (SELECT 1 AS c FROM L1 AS a,L1 AS b),
    L3 AS (SELECT 1 AS c FROM L2 AS a,L2 AS b),
    L4 AS (SELECT 1 AS c FROM L3 AS a,L3 AS b),
    L5 AS (SELECT 1 AS c FROM L4 AS a,L4 AS b),
    nums AS (SELECT ROW_NUMBER() OVER (ORDER BY c)AS n FROM L5)
SELECT N FROM nums WHERE n<=@n
GO
DECLARE @s AS DATETIME,@e AS DATETIME
SET @s=‘20140501‘
SET @e=‘20141231‘
SELECT @s+n-1 AS dt FROM dbo.fn_nums(DATEDIFF(DAY,@s,@e))AS nums;
SELECT * FROM  dbo.fn_nums(10)
 

Tsql生成序列、日期序列

时间: 2024-11-02 20:41:01

Tsql生成序列、日期序列的相关文章

利用SQL表生成按日期序列的唯一ID

1. 创建一个表,用于存现在最大的ID SELECT [ID],[PreFix],[Code] FROM [DocumentNO] 2. 增加SP,利用锁表,生成相应的ID Create PROCEDURE [dbo].[GeneralDocumentNo] ( @preFix nvarchar(256), @outCode varchar(256) output ) AS BEGIN -- ============================================= -- Aut

Java 获取一定时间范围内的日期序列

以下是获取从2015年2月25到2015年3月08的日期序列的字符串java程序 通过修改程序中的startday和endday就可以调整日期范围 1 String startday = "20150225"; 2 String endday = "20150308"; 3 ArrayList<String> daysarr = new ArrayList<String>(); 4 SimpleDateFormat sdf = new Sim

uva 10098 生成字典续序列

生成字典续序列. // // main.cpp // 10098_1 // // Created by Fangpin on 15/3/7. // Copyright (c) 2015年 FangPin. All rights reserved. // #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; char

SQL 生成一个日期范围

有时想按日或月生成一个序列,就像2014-1-1.2014-1-2.2014-1-3... 在sql server中可以写个函数来实现. /* 生成一个日期范围,如2014.01.2014.02... @Increment 步进值 @StartDate 开始日期 @EndDate 结束日期 ---------------------- @SelectedRange 返回值名称(多语句表值函数的返回值必须存放在返回值变量中) 返回表的字段和类型: iDate DATETIME, iYear cha

Oracle生成随机日期时间

一.生成随机日期 例如,生成一个2015年内的任意日期: /* * 分析:2015年内的任意日期,即日期范围是(2015-01-01, 2015-12-31) * 可以转化为 2015-01-01 + (0, 365), * 其中,2015-01-01 就是'指定日期'; (0, 365) 就是'指定范围'*/ 1. 首先确定2015年1月1日的日期整数: select to_char(to_date('2015-01-01', 'yyyy-MM-dd'), 'J') from dual; --

Python的序列1–序列的简介

Python的序列1–序列的简介 1.序列的简介 序列是Python中的重要组成部分,也是一种数据结构,那么什么是序列呢?按照定义来说,序列就是一个对象里面的所有元素全部按照一定的顺序进行排列,并且可以通过下标索引,访问到该对象的一个或者几个元素. 那么序列又包括什么呢?在Python中序列值包括三种:字符串,列表,元组.请注意,数值型的对象是不属于序列的,我们说到序列就是单只这三种.也要注意的是:我们说序列并不是单只列表,而应该是包括列表在内的,符合定义中的两条原则:1,顺序排列:2,通过下标

python生成随机日期字符串

原文来自:  python生成随机日期字符串 生成随机的日期字符串,用于插入数据库. 通过时间元组设定一个时间段,开始和结尾时间转换成时间戳. 时间戳中随机取一个,再生成时间元组,再把时间元组格式化输出为字符串 import time import random a1=(1976,1,1,0,0,0,0,0,0) #设置开始日期时间元组(1976-01-01 00:00:00) a2=(1990,12,31,23,59,59,0,0,0) #设置结束日期时间元组(1990-12-31 23:59

02 基本序列以及序列表示

基本序列以及序列表示 单位冲激序列 ??单位冲激序列\(\delta[n]\)是用的最频繁的序列,定义为 \[ \delta[n]= \begin{cases} 1, \quad n=0 \0, \quad 其他 \end{cases} \] ??单位冲激序列经时移后的表示为 \[ \delta[n-k]= \begin{cases} 1, \quad n=k \0, \quad 其他 \end{cases} \] 单位阶跃序列 ??单位阶跃序列记为\(\mu[n]\),定义为 \[ \mu[n

生成日期序列

select   convert(varchar(10), dateadd(day, number - 1, '2015-01-01'), 120) as taskDate    from master.dbo.spt_values     WHERE type='P' AND number <= datediff(day, '2010-01-01', '2020-02-01') + 1AND number>0