master.dbo.spt_values

--统计某月份周情况 没有的补0
if object_id(‘temp_tb‘) is not null 
drop table temp_tb

create table temp_tb
([ID] [numeric](18, 0) IDENTITY(1,1) NOT NULL,
[test_values] int NULL,
[time] datetime null,
);
go

insert into temp_tb([test_values],[time]) 
select 3,‘2009-2-1 10:12:30‘ union all
select 5,‘2009-2-5 09:20:23‘ union all
select 6,‘2009-2-6 11:21:34‘ union all
select 7,‘2009-2-8 12:22:12‘ union all
select 2,‘2009-2-10 16:45:25‘ union all
select 3,‘2009-2-13 13:21:14‘ union all
select 5,‘2009-2-15 15:58:09‘ union all
select 1,‘2009-2-15 08:35:47‘ union all
select 1,‘2009-2-15 09:13:07‘ union all
select 9,‘2009-2-15 09:15:04‘

select * from temp_tb

SELECT
    A.[Week],
    ISNULL(COUNT(B.test_values),0) AS num
FROM (
    SELECT
        datepart(week,dateadd(week,0,dateadd(day,number,‘2009-02-01‘))) AS [Week]
    FROM master.dbo.spt_values 
    WHERE type=‘p‘ AND number BETWEEN 0 AND 27
    GROUP BY datepart(week,dateadd(week,0,dateadd(day,number,‘2009-02-01‘)))
) AS A
LEFT JOIN temp_tb AS B
    ON A.[Week]=DATEPART(week,time)
GROUP BY A.[Week]

SELECT DATEPART(WEEK,‘2009-10-30 12:15:32.1234567 +05:10‘)  --44周

/*
ID                                      test_values time
--------------------------------------- ----------- -----------------------
1                                       3           2009-02-01 10:12:30.000
2                                       5           2009-02-05 09:20:23.000
3                                       6           2009-02-06 11:21:34.000
4                                       7           2009-02-08 12:22:12.000
5                                       2           2009-02-10 16:45:25.000
6                                       3           2009-02-13 13:21:14.000
7                                       5           2009-02-15 15:58:09.000
8                                       1           2009-02-15 08:35:47.000
9                                       1           2009-02-15 09:13:07.000
10                                      9           2009-02-15 09:15:04.000

(10 行受影响)

Week        num
----------- -----------
6           3
7           3
8           4
9           0

*/

--1、得出一天的时间段记录。
select 时间段=ltrim(a.number)+‘:00-‘+ltrim(b.number)+‘:00‘
from master..spt_values a,master..spt_values b
where a.type=‘p‘and b.type=‘p‘
 and a.number between 1 and 24 
 and b.number between 1 and 24 
 and a.number=b.number-1

/*
时间段
-------------------------------
1:00-2:00
2:00-3:00
3:00-4:00
4:00-5:00
5:00-6:00
6:00-7:00
7:00-8:00
8:00-9:00
9:00-10:00
10:00-11:00
11:00-12:00
12:00-13:00
13:00-14:00
14:00-15:00
15:00-16:00
16:00-17:00
17:00-18:00
18:00-19:00
19:00-20:00
20:00-21:00
21:00-22:00
22:00-23:00
23:00-24:00

(23 行受影响)
*/

--2、通过1个select语句某个月的所有日期记录
declare @date datetime
set @date=‘2009-11-23‘

select [day]=ltrim(year(@date))+right(100+month(@date),2)+right(‘0‘+ltrim(number),2)
from master..spt_values
where type=‘p‘
  and number >=1 
  and number <= datediff(dd,@date,dateadd(month,1,@date))

/*
day
--------------------
20091101
20091102
20091103
20091104
20091105
20091106
20091107
20091108
20091109
20091110
20091111
20091112
20091113
20091114
20091115
20091116
20091117
20091118
20091119
20091120
20091121
20091122
20091123
20091124
20091125
20091126
20091127
20091128
20091129
20091130

(30 行受影响)
*/

时间: 2024-08-25 15:31:48

master.dbo.spt_values的相关文章

学习使用master.dbo.spt_values表

如果要生成的临时表中有个连续的数字列,或者连续的日期列,如下所示: 2012-1-1 2012-1-2 2012-1-3 ... ... 可以这样写: declare @begin datetime,@end datetimeset @begin='2012-1-1'set @end='2012-1-5' declare @days intset @days=DATEDIFF(dd,@begin,@end)select DATEADD(dd,number,@begin) from master.

对象名master.dbo.spt_values无效解决办法

找到sql server安装目录下的u_tables.sql,例如:E:\Program Files (x86)\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Install 在出现 对象名master.dbo.spt_values无效解决办法错误的执行一下脚本就可以修复 原文地址:https://www.cnblogs.com/yy981420974/p/8297422.html

SQL SERVER大话存储结构(1)

阅读目录(Content) 1 数据页的类型 1.1 PFS 1.2.3 IAM 2 数据页结构 2.1 页头 2.2 行记录 2.3 空闲空间 2.4 行偏移量 3 查询数据页存储格式的途径 3.1 dbcc ind 3.1.1 语法说明 3.1.2 测试案例 3.2 dbcc page 3.2.1 语法说明 3.2.2 测试案例 如果转载,请注明博文来源: www.cnblogs.com/xinysu/   ,版权归 博客园 苏家小萝卜 所有.望各位支持! SQLServer的数据页大小是8

SQL SERVER大话存储结构(2)

阅读目录(Content) 1 行记录如何存储 1.1 堆表 1.2 聚集索引表格 2 非聚集索引结构 3 非聚集索引键值内容 3.1 堆表上的非聚集索引 3.2 聚集索引表(唯一)的非聚集索引 3.3 聚集索引表(非唯一)的非聚集索引 4 非聚集索引如何查找页 如果转载,请注明博文来源: www.cnblogs.com/xinysu/   ,版权归 博客园 苏家小萝卜 所有.望各位支持! 本系列上一篇博文链接:SQL SERVER大话存储结构(1)_数据页类型及页面指令分析 回到顶部(go t

Bcp 使用心得【转】

在做这方面研究的时候,的确遇到了不少麻烦. 首先在做bcp的时候,要开通大数据量访问权限 一.基于sql语句的导入导出 如果是基于SQL语句的导入导出,需要使用存储过程“master..xp_cmdshell”,默认情况下,sql server2005.sql server2008安装完后,xp_cmdshell是禁用的(可能是安全考虑),如果未开通,会报如下错误:(查询分析器:使用xp_cmdshell需要开启服务器的设置且需要开通账户的权限.这个权限DBA是不会给开启的) 消息 15281,

MS SQL 模仿ORACLE的DESC

前言: 在ORACLE数据库的SQL*PLUS里面有个DES(DESCRIBE)命令,它可以返回数据库所存储对象的描述,如下所示 SQL> DESC STUDENT_SCORE   Name Type Nullable Default Comments   ---------------- ---------- -------- ------- --------   STUDENT_NO NUMBER(10) 学号   CHINESE_SCORE NUMBER Y 语文成绩   ENGLISH_

【转】

[汇总]SQL CODE --- 经典·精彩 (转) 数据操作类 SQLHelper.cs http://www.cnblogs.com/zengxiangzhan/archive/2009/12/31/1636871.html 无限级分类 存储过程 http://www.cnblogs.com/zengxiangzhan/archive/2010/01/04/1639220.html 百万级分页存储 http://www.cnblogs.com/zengxiangzhan/archive/20

Sybase查询表结构的方法(类似于Oracle的Desc)

经过我多次验证,终于找到了Sybase中查询数据库结构的方法了. 在此之前,我就很不解这Sybase数据库怎么就没有和Oracle.MySql一样简便的方法呢 desc 表名; 在网上查询之后,得到一个结果. sp_help 表名; 但是这样查出了多个结果.虽然里面有我们想要的结果,但我们只取一个,而且还在中间. 怎么办呢?看存储过程源码,把我们想要的结果截取出来吧. sp_help存储过程在sybsystemprocs库中, 源码: /* Sccsid = "%Z% generic/sproc

常用sql 全记录(添加中)

-- 数据库SQL总结中........... --SQL分类: (CREATE,ALTER,DROP,DECLARE) ---DDL-数据定义语言(SELECT,DELETE,UPDATE,INSERT) ---DML-数据操纵语言(GRANT,REVOKE,COMMIT,ROLLBACK) --DCL-数据控制语言--设置内存选项--设置 min server memory 配置项EXEC sp_configure N'min server memory (MB)', 0 --设置 max