SQL Server时间粒度系列----第5节小时、分钟时间粒度详解
IF OBJECT_ID(N'dbo.ufn_Hours', 'FN') IS NOT NULL
BEGIN
DROP FUNCTION dbo.ufn_Hours;
END
GO --==================================
-- 功能: 获得指定的日期时间基于基准日期的总小时数(一个整数值)
-- 说明: 如果指定的日期时间为NULL或者小于基准日期“--”时,则其值默认基准日期
-- 结果值为非负整数,从0开始计数。
-- 作者: XXX
-- 创建: yyyy-MM-dd
-- 修改: yyyy-MM-dd XXX 修改内容描述
-- 调用: SET @intHours = dbo.ufn_Hours('2008-01-14 17:45') --
--==================================
CREATE FUNCTION dbo.ufn_Hours
(
@dtmDate DATETIME
) RETURNS INT
--$Encode$--
AS
BEGIN
SET @dtmDate = dbo.ufn_GetValidDate(@dtmDate); -- datepart参数也可以为hh
RETURN DATEDIFF(HOUR, '1900-01-01', @dtmDate)
END
GO IF OBJECT_ID(N'dbo.ufn_Hours2Date', 'FN') IS NOT NULL
BEGIN
DROP FUNCTION dbo.ufn_Hours2Date;
END
GO --==================================
-- 功能: 获得一个整数值基于基准日期对应的日期时间
-- 说明: 如果指定的整数值为NULL或为负整数时,则其值默认为0;
-- 如果指定的整数值大于“-- ::”对应的整数值时,则其值默认设置为“-- ::”对应的整数值
-- 结果值为从基准日期开始计数的日期
-- 作者: XXX
-- 创建: yyyy-MM-dd
-- 修改: yyyy-MM-dd XXX 修改内容描述
-- 调用: SET @dtmDate = dbo.fn_Hours2Date() -- '2008-01-14 17:00'
--==================================
CREATE FUNCTION dbo.ufn_Hours2Date
(
@intHours INT
) RETURNS DATETIME
AS
BEGIN
SET @intHours = dbo.ufn_GetValidDateNum(@intHours); DECLARE @intHoursMax AS INT;
SET @intHoursMax = dbo.ufn_Hours('9999-12-31 23:00:00'); IF @intHours >= @intHoursMax
BEGIN
SET @intHours = @intHoursMax;
END -- datepart参数也可以为hh
RETURN DATEADD(hh, @intHours, '1900-01-01')
END
GO
DECLARE @dtmDate AS DATETIME;
SET @dtmDate = '2008-01-14 17:00:00'; SELECT @dtmDate AS 'The Current DateTime (Precision:Hour)'
,dbo.ufn_Hours(@dtmDate) AS 'The Total Of Hours Base-on Basedate "1900-01-01"'
,dbo.ufn_Hours2Date(dbo.ufn_Hours(@dtmDate))AS 'Hours Basedatetime Mapping';
GO



IF OBJECT_ID(N'dbo.ufn_Minutes', 'FN') IS NOT NULL
BEGIN
DROP FUNCTION dbo.ufn_Minutes;
END
GO --==================================
-- 功能: 获得指定的日期时间基于基准日期的总小时数(一个整数值)
-- 说明: 如果指定的日期时间为NULL或者小于基准日期“--”时,则其值默认基准日期
-- 结果值为非负整数,从0开始计数。
-- 作者: XXX
-- 创建: yyyy-MM-dd
-- 修改: yyyy-MM-dd XXX 修改内容描述
-- 调用: SET @intMinutes = dbo.ufn_Minutes('2008-01-14 17:10:00');
--==================================
CREATE FUNCTION dbo.ufn_Minutes
(
@dtmDate DATETIME
) RETURNS INT
AS
BEGIN
SET @dtmDate = dbo.ufn_GetValidDate(@dtmDate); -- datepart参数也可以是mi或n
RETURN DATEDIFF(MINUTE, '1900-01-01', @dtmDate)
END
GO IF OBJECT_ID(N'dbo.ufn_Minutes2Date', 'FN') IS NOT NULL
BEGIN
DROP FUNCTION dbo.ufn_Minutes2Date;
END
GO --==================================
-- 功能: 获得一个整数值基于基准日期对应的日期时间
-- 说明: 如果指定的整数值为NULL或为负整数时,则其值默认为0;
-- 如果指定的整数值大于“-- ::”对应的整数值时,则其值默认设置为“-- ::”对应的整数值
-- 结果值为从基准日期开始计数的日期
-- 作者: XXX
-- 创建: yyyy-MM-dd
-- 修改: yyyy-MM-dd XXX 修改内容描述
-- 调用: SET @dtmDate = dbo.ufn_Minutes2Date() -- '2008-01-14 17:10:00'
--==================================
CREATE FUNCTION dbo.ufn_Minutes2Date
(
@intMinutes INT
) RETURNS DATETIME
AS
BEGIN
SET @intMinutes = dbo.ufn_GetValidDateNum(@intMinutes); DECLARE @intMinutesMax AS INT;
SET @intMinutesMax = dbo.ufn_Minutes('5983-01-24 02:07:00'); IF @intMinutes >= @intMinutesMax
BEGIN
SET @intMinutes = @intMinutesMax;
END -- datepart参数也可以是mi或n
RETURN DATEADD(MINUTE, @intMinutes, '1900-01-01')
END
GO
DECLARE @dtmDate AS DATETIME;
SET @dtmDate = '2008-01-14 17:10:00';
SELECT @dtmDate AS 'The Current DateTime (Precision:Minute)'
,dbo.ufn_Minutes(@dtmDate) AS 'The Total Of Minutes Base-on Basedate "1900-01-01"'
,dbo.ufn_Minutes2Date(dbo.ufn_Minutes(@dtmDate)) AS 'Minute Basedatetime Mapping'
GO


1、https://msdn.microsoft.com/zh-cn/library/ms186819(v=sql.90).aspx
SQL Server时间粒度系列----第5节小时、分钟时间粒度详解的更多相关文章
- SQL Server时间粒度系列----第4节季、年时间粒度详解
本文目录列表: 1.SQL Server季时间粒度2.SQL Server年时间粒度 3.总结语 4.参考清单列表 SQL Serve季时间粒度 季时间粒度也即是季度时间粒度.一年每3 ...
- 【目录】sql server 进阶篇系列
随笔分类 - sql server 进阶篇系列 sql server 下载安装标记 摘要: SQL Server 2017 的各版本和支持的功能 https://docs.microsoft.com/ ...
- SQL Server调优系列基础篇
前言 关于SQL Server调优系列是一个庞大的内容体系,非一言两语能够分析清楚,本篇先就在SQL 调优中所最常用的查询计划进行解析,力图做好基础的掌握,夯实基本功!而后再谈谈整体的语句调优. 通过 ...
- SQL Server调优系列基础篇(常用运算符总结——三种物理连接方式剖析)
前言 上一篇我们介绍了如何查看查询计划,本篇将介绍在我们查看的查询计划时的分析技巧,以及几种我们常用的运算符优化技巧,同样侧重基础知识的掌握. 通过本篇可以了解我们平常所写的T-SQL语句,在SQL ...
- SQL Server调优系列基础篇(并行运算总结篇二)
前言 上一篇文章我们介绍了查看查询计划的并行运行方式. 本篇我们接着分析SQL Server的并行运算. 闲言少叙,直接进入本篇的正题. 技术准备 同前几篇一样,基于SQL Server2008R2版 ...
- SQL Server调优系列基础篇(索引运算总结)
前言 上几篇文章我们介绍了如何查看查询计划.常用运算符的介绍.并行运算的方式,有兴趣的可以点击查看. 本篇将分析在SQL Server中,如何利用先有索引项进行查询性能优化,通过了解这些索引项的应用方 ...
- SQL Server调优系列进阶篇(查询语句运行几个指标值监测)
前言 上一篇我们分析了查询优化器的工作方式,其中包括:查询优化器的详细运行步骤.筛选条件分析.索引项优化等信息. 本篇我们分析在我们运行的过程中几个关键指标值的检测. 通过这些指标值来分析语句的运行问 ...
- SQL Server调优系列进阶篇(深入剖析统计信息)
前言 经过前几篇的分析,其实大体已经初窥到SQL Server统计信息的重要性了,所以本篇就要祭出这个神器了. 该篇内容会很长,坐好板凳,瓜子零食之类... 不废话,进正题 技术准备 数据库版本为SQ ...
- SQL Server调优系列进阶篇(如何维护数据库索引)
前言 上一篇我们研究了如何利用索引在数据库里面调优,简要的介绍了索引的原理,更重要的分析了如何选择索引以及索引的利弊项,有兴趣的可以点击查看. 本篇延续上一篇的内容,继续分析索引这块,侧重索引项的日常 ...
随机推荐
- centos 6.5 中设置mysql 5.1.73 主从同步配置过程
本文章给大家介绍centos 6.5设置mysql主从同步过程记录,希望文章对各位会带来帮助. 涉及到的centos系统均为虚拟机,VM下安装的版本. 在centos 6.5上设置了mysql主从功 ...
- TCP字节流和UDP数据报区别
两者的区别在于TCP接收的是一堆数据,而每次取多少由主机决定;而UDP发的是数据报,客户发送多少就接收多少. 拥有这些区别的原因是由于TCP和UDP的特性不同而决定的.TCP是面向连接的,也就是说,在 ...
- Sensor(ORIENTATION)
package com.example.sensor01; import java.util.List; import android.hardware.Sensor; import android. ...
- java提高篇(六)-----使用序列化实现对象的拷贝
我们知道在Java中存在这个接口Cloneable,实现该接口的类都会具备被拷贝的能力,同时拷贝是在内存中进行,在性能方面比我们直接通过new生成对象来的快,特别是在大对象的生成上,使得性能的提升非常 ...
- jQuery 绑定事件到动态创建的元素上
在进入主题之前,我们先来看一个前台页面经常用到的功能:点击页面输入框时自动选择其中文本. 很容易想到利用输入框的focus事件,当输入框获得焦点时,再调用jQuery的select()方法. Okay ...
- 使用FiddlerCore来测试WebAPI
大家在调试Web相关的API时,经常会用Fiddler来查看相关的请求,以及返回结果.当然你也可以尝试修改或者重复你的请求信息.本文主要介绍如何使用代码来实现fiddler的功能. Fiddler C ...
- Java处理Radius access-challenge
最近使用 RSA Authentication Manager, 并且与其自带的Radius server整合, RSA的Radius server 配置不太透明, 目前只配成功了PAP方式的验证,C ...
- weinre使用
2016-1-21 更新说明: 微信web开发者工具已经集成了weinre,只需设置手机代理便可调试任意页面,更简单更方便,推荐使用! Web应用开发者需要针对手机进行界面的调试,但是手机上并没有称心 ...
- atitit..代码生成流程图 流程图绘制解决方案 java c#.net php v2
atitit..代码生成流程图 流程图绘制解决方案 java c#.net php v2 1.1. Markdown 推荐,就是代码和flow都不能直接使用.1 1.2. Java code2fl ...
- 使用System.Drawing.Imaging.dll进行图片的合并
在最近开发项目的时候有时候需要进行图片的合并,即将两张图片合并成功一张图片 合并图片的代码: #region 两张图片的合并 /// <summary > /// 将Image对象转化成二 ...