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 ...
随机推荐
- 第三次作业:PSP耗时
PSP个人项目耗时对比记录表:四则运算 Personal Software Process Stages Time(%) Planning 7 Estimate 9 开发 76 •需求分析 ...
- java提高篇(二十)-----集合大家族
在编写java程序中,我们最常用的除了八种基本数据类型,String对象外还有一个集合类,在我们的的程序中到处充斥着集合类的身影!java中集合大家族的成员实在是太丰富了,有常用的Arra ...
- Fatal error: Maximum function nesting level of '100' reached, aborting!
这个问题是由于启用了xdebug,而xdebug默认设置了函数最大嵌套数为100 解决办法: 找到php.ini文件,找到xdebug在最后加上xdebug.max_nesting_level = 5 ...
- Linux—解压缩
压缩和解压("//"命令的解释) 常用压缩格式 .zip .gz .bz2 .tar.bz2 .tar.gz .zip格式压缩: zip 压缩 ...
- Memcache基础教程
Memcache是什么 Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力. 它可以应 ...
- 第1讲 Redis部署与基本操作
目录 一.简介 二.安装 1.默认安装位置 2.指定安装位置 3.安装的可执行文件的作用 三.启动与关闭 四.配置文件 五.Redis的数据类型 1. 共计5种类型 2. String(子串类型) 3 ...
- Java程序员的日常—— 基于类的策略模式、List<?>与List、泛型编译警告、同比和环比
早晨起得太早,昨晚睡得太晚,一天都迷迷糊糊的.中午虽然睡了半个小时,可是依然没有缓过来.整个下午都在混沌中....不过今天下载了一款手游--<剑侠情缘>,感觉不错,喜欢这种类型的游戏. 今 ...
- salesforce 零基础学习(三十八)Translate 的使用(国际化处理)
本篇参考:http://resources.docs.salesforce.com/200/17/en-us/sfdc/pdf/salesforce_workbench_cheatsheet.pdf ...
- salesforce 零基础学习(十九)Permission sets 讲解及设置
Permission sets以及Profile是常见的设置访问权限的方式. Profile规则为'who see what'.通过Profile可以将一类的用户设置相同的访问权限.对于有着相同Pro ...
- MVC利用URLRoute实现伪静态
routes.MapRoute( "Default", // Route name "{con ...