sqlserver查询当月的每一天_SQL生成一年每一天的时间列表的几种方法

本文介绍了在SQL SERVER 2012及以上版本中生成一年每一天日期列表的三种方法,包括利用交叉连接、ROW_NUMBER()函数和循环。通过构建序列然后使用DATEADD(DAY, seq, @DstDate)可以得到所需日期。" 129145535,17013736,MySQL数据库知识详解与实战,"['数据库', 'SQL语言', 'MySQL', '数据操纵', 'JDBC']
摘要由CSDN通过智能技术生成

工作好几年了,一直没有写博客,准备捡起来。。。

以下脚本适用环境:SQL SERVER (starting with 2012)

1、构建序列:

/*1-1:利用交叉连接,推荐下列这种写法*/

SELECT

/*2012 开始已支持OFFSET 语法,不再推荐使用TOP N */

s1.i + s2.i + s3.i + s4.i + s5.i + s6.i + s7.i + s8.i + s9.i AS seq

FROM ( SELECT i = 0 UNION ALL SELECT i = 1 ) s1

CROSS JOIN ( SELECT 0 as i UNION ALL SELECT 2 as i) s2

CROSS JOIN ( SELECT 0 as i UNION ALL SELECT 4 as i) s3

CROSS JOIN ( SELECT 0 as i UNION ALL SELECT 8 as i) s4

CROSS JOIN ( SELECT 0 as i UNION ALL SELECT 16 as i) s5

CROSS JOIN ( SELECT 0 as i UNION ALL SELECT 32 as i) s6

CROSS JOIN ( SELECT 0 as i UNION ALL SELECT 64 as i ) s7

CROSS JOIN ( SELECT 0 as i UNION ALL SELECT 128 as i ) s8

CROSS JOIN ( SELECT 0 as i UNION ALL SELECT 256 as i ) s9

ORDER BY seq

OFFSET 0 ROWS FETCH NEXT 366 ROWS ONLY

/* 1-2:如果系统表列数不够或者过多,会对结果或性能有影响 */

SELECT ROW_NUMBER() OVER (ORDER BY a1.object_id) - 1 AS seq

FROM sys.all_columns a1 WITH ( NOLOCK ) ,

sys.all_columns a2 WITH ( NOLOCK )

ORDER BY seq

OFFSET 0 ROWS FETCH NEXT 366 ROWS ONLY

/* 1-3:循环,不推荐的写法 */

DECLARE @I INT

DECLARE @seq TABLE

(

seq INT NOT NULL

)

SET @I=0

WHILE @I < 366

BEGIN

INSERT INTO @seq(seq)

VALUES(@I)

SET @I+=1

END

SELECT * FROM @seq

2、基于以上的任意一种序列,使用DATEADD(DAY,seq,@DstDate) 即可生成一年中的每一天的时间列表。

3、拓展:MySQL中如何利用以上的思路,在不编写存储过程或函数的前提下,利用SQL 语句拆分一个字符串到数组?

Sql将一列数据拆分为多行显示的两种方法

原始数据与期望结果有表tb, 如下:id          value----------- -----------1           aa,bb2           aaa,bbb,ccc欲按 ...

c&num;保存datagridview中的数据时报错 &OpenCurlyDoubleQuote;动态SQL生成失败。找不到关键信息”

ilovejinglei 原文 C#中保存datagridview中的数据时报错"动态SQL生成失败.找不到关键信息" 问题描述     相关代码 using System; us ...

重构 ORM 中的 Sql 生成

Rafy 领域实体框架设计 - 重构 ORM 中的 Sql 生成   前言 Rafy 领域实体框架作为一个使用领域驱动设计作为指导思想的开发框架,必然要处理领域实体到数据库表之间的映射,即包含了 OR ...

一条SQL生成数据字典

有个字典表并定期维护,对DBA和开发很重要,终于把他们整合在一起了,看有没问题? 一条SQL生成数据字典,包含所有OPEN用户.表名.字段名.字段序号.字段属性.默认值.是否非空.字段意思.主键标识. ...

对于不返回任何键列信息的 selectcommand 不支持 updatecommand 的动态 sql 生成

大家知道,DataSet保存的数据是位于服务器内存里面的原数据库的“副本”.所以用DataSet更新数据的过程就是先对“副本”进行更新,然后 在将“原本”更新,按照我的理解就是把“原本”覆盖掉.具体到 ...

查看Linq to Sql生成的sql语句(转)

查看Linq to Sql生成的sql语句   在控制台项目中,比较简单,直接db.Log = Console.Out;就OK了 但是在其他项目中,需要处理如下: StreamWriter sw = ...

PHP通过sql生成CSV文件并下载&comma;PHP实现文件下载

/** * PHP通过sql生成CSV文件并下载 * @param string $sql 查询sql,结果为二维数组 * @param array $title 数据,CSV文件标题 * @para ...

Sql Server本地高版本备份数据备份至远程低版本数据库方法

想要将Sqlserver高版本备份的数据还原到低版本SqlServer2008R2上去,但是这在SqlServer中是没法直接还原数据库的,通过以下方法可以顺利还原. 通过高版本生成sql脚本在低版本 ...

MySQL中优化sql语句查询常用的30种方法

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使 ...

随机推荐

对于大量left join 的表查询,可以在关键的 连接节点字段上创建索引。

对于大量left join 的表查询,可以在关键的 连接节点字段上创建索引. 问题: 大量的left join 怎么优化 select a.id,a.num,b.num,b.pcs,c.num, c. ...

win7下无法安装QTP-少了Microsoft Visual c&plus;&plus;2005 sp1运行时组件

问题是:当我点击QTP的setup.exe进行QTP安装时,出现提示[少了Microsoft Visual c++2005 sp1运行时组件,安装时会提示命令行选项语法错误,键入“命令/?”可获取帮肋 ...

OpenJudge&lowbar;cdqz 数据结构版块小结

题目整理 Challenge 0  随机线性存储表-easy Challenge 1  链表数组-easy Challenge 2  可持久化Treap的可持久化运用-hard Challenge 3 ...

POJ 2049 Finding Nemo

Finding Nemo Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 8631   Accepted: 2019 Desc ...

JavaScript 函数作用域和闭包

函数作用域和闭包  词法作用域   它们在定义它们的作用域里运行,而不是在执行的作用域运行,但是只有在运行时,作用域链中的属性才被 定义(调用对象),此时,可访问任何当前的绑定.   调用对象     ...

【BZOJ1257】余数之和(数论分块,暴力)

[BZOJ1257]余数之和(数论分块,暴力) 题解 Description 给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + - + k mod n的 ...

前端笔记之NodeJS(一)初识NodeJS&amp&semi;内置模块&amp&semi;特点

一.NodeJS简介 NodeJS是开发服务器后台的东西,和PHP.JavaEE.python类似,和传统的浏览器的关注DOM的JS完全不同,将JavaScript触角伸到了服务器端.内核是Chrom ...

虚拟机设置固定ip可以使shell远程连接到服务器

配置vim /etc/sysconfig/network-scripts/ifcfg-ens33 IPADDR = 你的本机ip 192.168.1. 的范围内 NETMASK = 255.255.2 ...

SpringMVC学习(三)———— springmvc的数据校验的实现

一.什么是数据校验? 这个比较好理解,就是用来验证客户输入的数据是否合法,比如客户登录时,用户名不能为空,或者不能超出指定长度等要求,这就叫做数据校验. 数据校验分为客户端校验和服务端校验 客户端校验 ...

POJ1509 Glass Beads&lpar;最小表示法 后缀自动机&rpar;

Time Limit: 3000MS   Memory Limit: 10000K Total Submissions: 4901   Accepted: 2765 Description Once ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值