数据库 日历表存储-with用法

--1.连续数字表
drop table Nums
CREATE TABLE Nums(n int NOT NULL PRIMARY KEY CLUSTERED)

WITH B1 AS(SELECT n=1 UNION ALL SELECT n=1), --2
B2 AS(SELECT n=1 FROM B1 a CROSS JOIN B1 b), --4
B3 AS(SELECT n=1 FROM B2 a CROSS JOIN B2 b), --16
B4 AS(SELECT n=1 FROM B3 a CROSS JOIN B3 b), --256
B5 AS(SELECT n=1 FROM B4 a CROSS JOIN B4 b), --65536
--..还可以继续,不过够用了
CTE AS(SELECT autonum=ROW_NUMBER() over(order by (select 1)) FROM B5 a CROSS JOIN B3 b) --65536 * 16
--select * from CTE
INSERT INTO Nums SELECT TOP(1000000) autonum FROM CTE --插入100万条数据

--2. 日历表
drop table calendar
CREATE TABLE Calendar(
date date NOT NULL PRIMARY KEY CLUSTERED,
weeknum int NOT NULL,
weekday int NOT NULL,
weekname nchar(3) NOT NULL,
workday bit NOT NULL
)

WITH CTE1 AS(
SELECT
date = DATEADD(day,n,‘19991231‘)
FROM Nums
WHERE n <= DATEDIFF(day,‘19991231‘,‘20501231‘)
),
CTE2 AS(
SELECT
date,
weeknum = DATEPART(week,date),
weekday = DATEPART(weekday,date)-1,
weekname = DATENAME(weekday,date)
FROM CTE1
)
--select * from CTE2
INSERT INTO Calendar
SELECT
date,
weeknum,
weekday,
weekname,
workday = CASE WHEN weekday IN (0,6) THEN 0 ELSE 1 END
FROM CTE2

--
select * from Calendar
select @@DATEFIRST

时间: 2024-10-16 20:20:01

数据库 日历表存储-with用法的相关文章

在数据库中存储层级结构

(摘自:http://qinxuye.me/article/storing-hierachical-data-in-database/) 本文参考自这篇文章.文章是2003年的,但是现在来看仍然有着实际意义. 层级结构,也叫树形结构.在实际应用中,你经常需要保存层级结构到数据库中.比如说:你的网站上的目录.不过,除非使用类XML的数据库,通用的关系数据库很难做到这点. 对于树形数据的存储有很多种方案.主要的方法有两种:邻接表模型,以及修改过的前序遍历算法.本文将会讨论这两种方法的实现.这里的例子

查看和改动MySQL数据库表存储引擎

要做一名合格的程序猿,除了把代码写的美丽外,熟知数据库方面的知识也是不可或缺的.以下总结一下怎样查看和改动MySQL数据库表存储引擎:        1.查看数据库所能支持的存储引擎:show engines;        2.查看某个数据库中某个表所使用的存储引擎:show table status from db_name where name='table_name';(注:将where条件去掉后能够查看某个数据库中全部表的存储引擎情况)        3.改动表引擎方法:alter t

SharedPreferences数据、openFileOutput文件、SQLite数据库文件存储位置

在模拟器中: SharedPreferences将XML文件保存在/data/data/<package name>/shared_prefs目录下, openFileOutput方法将文件保存在/data/data/<package name>/files目录下 SQLite数据库文件存放在/data/data/<package name>/databases目录下 SharedPreferences数据.openFileOutput文件.SQLite数据库文件存储位

数据库中存储日期的字段类型到底应该用varchar还是datetime

将数据库中存储时间的数据类型改为varchar(),这时最好让这些时间是数据库中自动生成的(一个没有格式的输入也可能会导致输出错误),因为存储类型为varchar(),所以获取到的值也就被认为是一个字符串,直接将数据库中的时间字符串进行转化(这时那些转化函数是能识别数据库中的时间函数的),客户端的时间格式不再影响转换过程. 不过数据库中存储时间的类型如果为字符型也会带来一些麻烦: 数据库中的时间仅仅是用来显示.查找的,那么影响还不算大,但如果对时间字段进行一些算法如计算星期.DateDiff.D

MySQL数据库InnoDB存储引擎多版本控制(MVCC)实现原理分析

文/何登成 导读:   来自网易研究院的MySQL内核技术研究人何登成,把MySQL数据库InnoDB存储引擎的多版本控制(简称:MVCC)实现原理,做了深入的研究与详细的文字图表分析,方便大家理解InnoDB存储引擎实现的多版本控制技术(简称:MVCC). 基本知识 假设对于多版本控制(MVCC)的基础知识,有所了解.MySQL数据库InnoDB存储引擎为了实现多版本的一致性读,采用的是基于回滚段的协议. 行结构 MySQL数据库InnoDB存储引擎表数据的组织方式为主键聚簇索引.由于采用索引

在数据库中 存储图片 以及 在界面中显示图片(存储图片路径)- 这种方法相对与存储二进制文件好

花了一下午时间,终于学会了在数据库中存储图片,以及在界面中显示图片了. 存储图片有两种方法: 一种是:直接把图片转换成二进制文件存储在数据库中. 一种是:存储图片的路径到数据库,用的时候直接调用路径给image等图像控件即可. 两种方法,有利有弊,第一种方法适合存储量少且重要的图片信息.第二种方法适合存储量大但不是太重要的图片. 我使用的是第二种方法,简单,实用. 下面就是我具体的实现过程: 首先我新建了两个网页文件,insert_photo.aspx / select_photo.apsx 第

MySQL数据库InnoDB存储引擎

MySQL数据库InnoDB存储引擎Log漫游  http://blog.163.com/zihuan_xuan/blog/static/1287942432012366293667/ MySQL数据库InnoDB存储引擎,布布扣,bubuko.com

SQL Server 2008 R2 下移动数据库的存储位置

使用场景:1. 该数据库增长的较大,存储磁盘空间不足:   2. 在特定情况下该数据库需要移动到另外一块磁盘上(呵呵...我的情况就是之前的磁盘要还给别人) 步骤: 1. 新建查询 SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('yourDataBaseName'); GO 查看到结果会看到数据库主文件以及日志的名称和物理存储的地址名称   2.新建查询 use master alter da

Exchange-查看邮箱大小及所在数据库的存储配额

查看指定用户邮箱的大小 [PS] F:\>Get-Mailbox -Identity xxxxxxx | Get-MailboxStatistics  | select DisplayName,TotalItemSize,Database DisplayName                             TotalItemSize                           Database -----------                             -