SQL Server时间粒度系列----第6节基于当前日的小时数和分钟数与mysql unix_timestamp和from_unixtime的mssql实现
IF OBJECT_ID(N'dbo.ufn_HoursOfDay', 'FN') IS NOT NULL
BEGIN
DROP FUNCTION dbo.ufn_HoursOfDay;
END
GO --==================================
-- 功能: 获取指定的日期日期基于所在当期日午夜零时的小时数
-- 作者: 结果值从0开始计数,包括0、1、2、……、23
-- 作者: XXX
-- 创建: yyyy-MM-dd
-- 修改: yyyy-MM-dd XXX 修改内容描述
-- 调用: SET @tintHoursOfDay = dbo.ufn_HoursOfDay(GETDATE());
--==================================
CREATE FUNCTION dbo.ufn_HoursOfDay
(
@dtmDate DATETIME -- 指定的日期时间
)
RETURNS TINYINT
AS
BEGIN
RETURN DATEPART(HOUR, @dtmDate);
END
GO IF OBJECT_ID(N'dbo.ufn_MinutesOfDay', 'FN') IS NOT NULL
BEGIN
DROP FUNCTION dbo.ufn_MinutesOfDay;
END
GO --==================================
-- 功能: 获取指定的日期时间基于所在当前日午夜零时的分钟数
-- 作者: 结果值从0开始计数,包括0、1、2、3、1439
-- 作者: XXX
-- 创建: yyyy-MM-dd
-- 修改: yyyy-MM-dd XXX 修改内容描述
-- 调用: SET @sintMinutesOfDay = dbo.fn_MinutesOfDay(GETDATE());
--==================================
CREATE FUNCTION dbo.ufn_MinutesOfDay
(
@dtmDate DATETIME -- 指定的日期时间
)
RETURNS SMALLINT
AS
BEGIN
RETURN DATEPART(HOUR, @dtmDate) * 60 + DATEPART(MINUTE,@dtmDate);
END
GO
DECLARE @dtmDateTime AS DATETIME;
SET @dtmDateTime = '2017-01-13 00:00:00' SELECT
@dtmDateTime AS 'The Current DateTime'
,dbo.ufn_HoursOfDay(@dtmDateTime) AS 'HoursOfDay'
,dbo.ufn_MinutesOfDay(@dtmDateTime) AS 'MinutesOfDay'; SET @dtmDateTime = '2017-01-13 12:01:00'
SELECT
@dtmDateTime AS 'The Current DateTime'
,dbo.ufn_HoursOfDay(@dtmDateTime) AS 'HoursOfDay'
,dbo.ufn_MinutesOfDay(@dtmDateTime) AS 'MinutesOfDay'; SET @dtmDateTime = '2017-01-13 23:59:00'
SELECT
@dtmDateTime AS 'The Current DateTime'
,dbo.ufn_HoursOfDay(@dtmDateTime) AS 'HoursOfDay'
,dbo.ufn_MinutesOfDay(@dtmDateTime) AS 'MinutesOfDay';
GO


IF OBJECT_ID(N'dbo.ufn_UnixTimestamp', 'FN') IS NOT NULL
BEGIN
DROP FUNCTION dbo.ufn_UnixTimestamp;
END
GO --==================================
-- 功能: 获取UnixTimestamp(unix日期时间戳)
-- 说明: 结果值从0开始计数,基于
-- 作者: XXX
-- 创建: yyyy-MM-dd
-- 修改: yyyy-MM-dd XXX 修改内容描述
-- 调用: SELECT dbo.ufn_UnixTimestamp(GETDATE());
--==================================
CREATE FUNCTION dbo.ufn_UnixTimestamp
(
@dtmDateTime DATETIME -- 指定的日期时间
) RETURNS BIGINT
--$Encode$--
AS
BEGIN
DECLARE @dtmUnixBasedate AS DATETIME;
SET @dtmUnixBasedate = '1970-01-01';
DECLARE @tintCurrentTimeZone AS TINYINT;
SET @tintCurrentTimeZone = 8; IF @dtmDateTime IS NULL OR @dtmDateTime < DATEADD(HOUR, @tintCurrentTimeZone, @dtmUnixBasedate)
BEGIN
RETURN 0;
END SET @dtmDateTime = CONVERT(DATETIME, CONVERT(VARCHAR(23), @dtmDateTime, 120)); RETURN DATEDIFF(SECOND, @dtmUnixBasedate, DATEADD(HOUR, -1*@tintCurrentTimeZone, @dtmDateTime));
END
GO IF OBJECT_ID(N'dbo.ufn_FromUnixTimestamp', 'FN') IS NOT NULL
BEGIN
DROP FUNCTION dbo.ufn_FromUnixTimestamp;
END
GO --==================================
-- 功能: 获取UnixTimestamp(unix日期时间戳)
-- 说明: 具体实现阐述
-- 作者: XXX
-- 创建: yyyy-MM-dd
-- 修改: yyyy-MM-dd XXX 修改内容描述
-- 调用: SELECT dbo.ufn_FromUnixTimestamp(2);
--==================================
CREATE FUNCTION dbo.ufn_FromUnixTimestamp
(
@bintUnixTimestamp BIGINT -- 指定的整数
) RETURNS DATETIME
--$Encode$--
AS
BEGIN
DECLARE @dtmUnixBasedate AS DATETIME;
SET @dtmUnixBasedate = '1970-01-01';
DECLARE @tintCurrentTimeZone AS TINYINT;
SET @tintCurrentTimeZone = 8; IF @bintUnixTimestamp >= 1
BEGIN
RETURN DATEADD(HOUR, @tintCurrentTimeZone, DATEADD(SECOND, @bintUnixTimestamp, @dtmUnixBasedate))
END RETURN @dtmUnixBasedate;
END
GO
DECLARE @dtmDateTime AS DATETIME;
SET @dtmDateTime = '1970-01-01'; SELECT
@dtmDateTime AS 'The Current DateTime'
,dbo.ufn_UnixTimestamp(@dtmDateTime) AS 'Bigint Value Base-on"1970-01-01"'
,dbo.ufn_FromUnixTimestamp(dbo.ufn_UnixTimestamp(@dtmDateTime)) AS 'The DateTime Mapping'; SET @dtmDateTime = '2016-01-11'; SELECT
@dtmDateTime AS 'The Current DateTime'
,dbo.ufn_UnixTimestamp(@dtmDateTime) AS 'Bigint Value Base-on"1970-01-01"'
,dbo.ufn_FromUnixTimestamp(dbo.ufn_UnixTimestamp(@dtmDateTime)) AS 'The DateTime Mapping';
GO


SQL Server时间粒度系列----第6节基于当前日的小时数和分钟数与mysql unix_timestamp和from_unixtime的mssql实现的更多相关文章
- SQL Server时间粒度系列----第4节季、年时间粒度详解
本文目录列表: 1.SQL Server季时间粒度2.SQL Server年时间粒度 3.总结语 4.参考清单列表 SQL Serve季时间粒度 季时间粒度也即是季度时间粒度.一年每3 ...
- SQL Server时间粒度系列----第9节时间粒度示例演示
本文目录列表: 1.准备测试数据 2.向测试数据表添加相关时间粒度字段列 3.基于日月季年统计汇总的演示 4.总结语 5.参考清单列表 准备测试数据 为了提供不同时间粒度示例的演示,就需要测试 ...
- SQL Server时间粒度系列----第1节时间粒度概述
本文目录列表: 1.什么是时间粒度?2.SQL Server提供的时间粒度3.SQL Server时间粒度代码演示 4.SQL Server基准日期 5.总结语6.参考清单列表 什么是时间粒度 ...
- SQL Server时间粒度系列----第3节旬、月时间粒度详解
本文目录列表: 1.SQL Server旬时间粒度2.SQL Server月有关时间粒度 3.SQL Server函数重构 4.总结语 5.参考清单列表 SQL Server旬时间粒度 ...
- SQL Server时间粒度系列----第5节小时、分钟时间粒度详解
本文目录列表: 1.SQL Server小时时间粒度2.SQL Server分钟时间粒度 3.总结语 4.参考清单列表 SQL Server小时时间粒度 这里说的时间粒度是指带有 ...
- SQL Server时间粒度系列----第8节位运算以及设置日历数据表节假日标志详解
本文目录列表: 1.位运算 2.设置日历数据表节假日标志 3.总结语 4.参考清单列表 位运算 SQL Server支持的按位运算符有三个,分别为:按位与(&).按位或(|).按位异或 ...
- SQL Server时间粒度系列
工作中经常遇到针对业务部门提出不同时间粒度(年.季度.月.周.日等等日期时间粒度,以下简称时间粒度)的数据统计汇总任务,也看到不少博友针对这方便的博文,结合SQL Server的日期时间函数和 ...
- SQL Server时间粒度系列----第7节日历数据表详解
本文目录列表: 1.时间粒度有关描述 2.时间维度有关功能函数3.日历数据表 4.日历数据表数据填充 5.总结语 6.参考清单列表 时间粒度有关描述 将该系列涉及到的时间粒度以及分钟以下的粒度 ...
- SQL Server时间粒度系列----第2节日期、周时间粒度详解
本文目录列表: 1.从MySQL提供的TO_DAYS和FROM_DAYS这对函数说起2.SQL Server日期时间粒度3.SQL Server周有关时间粒度 4.总结语 5.参考清单列表 从My ...
随机推荐
- 我的ORM之九 -- 生成器
我的ORM索引 数据库连接字符串格式 <add name="dbo" connectionString="" providerName="MyS ...
- Python自动化测试(1)-自动化测试及基本技术手段概述
生产力概述 在如今以google为首的互联网时代,软件的开发和生产模式都已经发生了变化, 在<参与感>一书提到:某位从微软出来的工程师很困惑,微软在google还有facebook这些公司 ...
- TW2015技术雷达中文版发布
今天thoughtworks 2015新版技术雷达pdf发布了,你可以从这里下载http://engage.thoughtworks.com/HQ0000Q0QOf5pE70nbD00GP,在这里你可 ...
- [.net 面向对象程序设计进阶] (5) Lamda表达式(一) 创建委托
[.net 面向对象程序设计进阶] (5) Lamda表达式(一) 创建委托 本节导读: 通过学习Lambda表达式,学会创建委托和表达式目录树,深入了解Lambda的特性,让你的代码变的更加清晰. ...
- Java提高篇(三八)-----Java集合细节(四):保持compareTo和equals同步
在Java中我们常使用Comparable接口来实现排序,其中compareTo是实现该接口方法.我们知道compareTo返回0表示两个对象相等,返回正数表示大于,返回负数表示小于.同时我们也知道e ...
- Yii Model中添加默认搜索条件
在查询中增加条件 public function defaultScope() { return array( 'condition' => " is_deleted = 0" ...
- Mybatis错误(一)org.apache.ibatis.exceptions.PersistenceException
在映射文件中,通过parameterType指定输入参数的类型,类型可以是简单类型.hashmap.pojo的包装类型.在测试包装类型过程中产生了一个错误:org.apache.ibatis.exce ...
- ios 滚动视图响应touchesBegin,touchesEnd等方法
能够滚动的控件都不会响应touchesBegin,touchesEnd等方法,这就需要对这个类进行封装 以UITextView为例 1,创建CustomTextView类,继承与UITextView ...
- 【管理心得之四十】中文“其他”、英文“other”、日文“その他”..........................................
场景再现====================={某研讨会}本学期为:调查研究.整理总结阶段.本阶段的主要任务是: 一.学习理论,收集.汇编学习资料,提高自己的素质..... 二.通过对部分班级学生 ...
- iOS-----用LLDB调试,让移动开发更简单(二)
image lookup –address 当我们有一个地址,想查找这个地址具体对应的文件位置,可以使用image lookup --address,简写为image lookup -a e.g: 当 ...