快捷搜索:

SQL实例进阶-学习sql server2005 step by step(七)

1.master..spt_values表

比如,输出一年的月份表,输出1000以内的自然数等等。数量继续且不跨越2048。那么应用master..spt_values表就会再也方便不过了。

例如

输出1000以内的自然数:

select number from master..spt_values

where type='P' and

number between 1 and 1000

代码

1 --输出2008年至今以来的月份列表:

2

3create table Mon

4 (

5 ID int identity(1,1),

6 Mon varchar(6)

7 )

8GO

9

10DECLARE

11@BeginMonth varchar(6),

12@EndMonth varchar(6)

13SELECT

14@BeginMonth='200801',

15 @EndMonth='200906'

16

17 INSERT Mon(Mon)

18 SELECT

19 CONVERT(VARCHAR(6),DATEADD(month,number,@BeginMonth+'01'),112)

20 FROM

21 master..spt_values

22 WHERE

23 type='P'

24 and

25 DATEADD(month,number,@BeginMonth+'01')@EndMonth+'01'

26 SELECT * FROM Mon

27

28 DROP TABLE Mon

29 --谋略一个日期所在的礼拜内的所有日期

30

31 declare @date datetime

32

33 set @date='20090423'

34

35 select [本周所有日期]=convert(varchar(10),dateadd(dd,a.number,@date+2-datepart(dw,@date)),120) from master..spt_values a where type='p' and number6

36

37

38

39 /*

40

41 本周所有日期

42

43 ----------

44

45 2009-04-20

46

47 2009-04-21

48

49 2009-04-22

50

51 2009-04-23

52

53 2009-04-24

54

55 2009-04-25

56

57 2009-04-26

58

59

60

61 (所影响的行数为 7 行)

62

63 */

64

您可能还会对下面的文章感兴趣: