IF EXISTS(SELECT TOP 1 * FROM sys.objects WHERE name=N'uF_DateFormat' AND [type]='FN')
DROP FUNCTION uF_DateFormat
GO SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: hehai
-- Create date: 2015-11-27 16:06:43
-- Description: 对指定的时间进行指定格式的转换 /*
@formatString
年 份:yy / yyyy (15/2015)
月 份: mm/MM (1/01 11/11)
日 期:d/dd/D/DD (1/01 10/10)
小 时:h/hh/H/HH (6AM/06AM/6/06) h表示按照12时制格式化, H表示按照24时制格式化,若为h/hh时间最后有[AM 或 PM]
(6PM/06PM/18/18)
-------------------------------------------
分 钟:mi/mz (10/10 1/01)
秒 钟:si/ss (1/01 10/10)
秒 钟:mss/ms (0/10/999 000/010/999)
*/
-- =============================================
CREATE FUNCTION uF_DateFormat
(
@date DATETIME, -- 指定转换时间
@formatString NVARCHAR(30), -- 指定需要转换格式
@defaultIfdateIsNull NVARCHAR(30) -- 返回指定时间的指定转换格式结果字符
)
RETURNS NVARCHAR(30)
AS
BEGIN
DECLARE @R NVARCHAR(30),@T NVARCHAR(5),@C CHAR(2)=N'AM'
DECLARE @Y INT,@M TINYINT,@D TINYINT,@H TINYINT,@MI TINYINT,@SS TINYINT,@MS INT SET @Y=DATEPART([YEAR],@date)
SET @M=DATEPART([MONTH],@date)
SET @D=DATEPART([DAY],@date)
SET @H=DATEPART([HOUR],@date)
SET @MI=DATEPART([MINUTE],@date)
SET @SS=DATEPART([SECOND],@date)
SET @MS=DATEPART([MILLISECOND],@date) SET @R=@formatString SET @R=REPLACE(@R,N'yyyy',CAST(@Y AS NVARCHAR(4)))
SET @R=REPLACE(@R,N'YYYY',CAST(@Y AS NVARCHAR(4)))
SET @R=REPLACE(@R,N'yy',RIGHT( CAST(@Y AS NVARCHAR(4)),2))
SET @R=REPLACE(@R,N'YY',RIGHT( CAST(@Y AS NVARCHAR(4)),2)) SET @T=CAST(@M AS NVARCHAR(2))
IF @M<10 SET @T=N''+CAST(@M AS NVARCHAR(2))
SET @R=REPLACE(@R,N'MM',@T)
SET @R=REPLACE(@R,N'mm',@T) SET @T=CAST(@D AS NVARCHAR(2))
IF @D<10 SET @T=N''+CAST(@D AS NVARCHAR(2))
SET @R=REPLACE(@R,N'dd',@T)
SET @R=REPLACE(@R,N'DD',@T)
SET @R=REPLACE(@R,N'dd',@T)
SET @R=REPLACE(@R,N'd',@T) SET @T=CAST(@H AS NVARCHAR(2))
IF @H<10 SET @T=N''+CAST(@H AS NVARCHAR(2))
SET @R=REPLACE(@R,N'HH',@T)
SET @R=REPLACE(@R,N'H',@T) -- 12小时制 --
SET @T=CAST(@H AS NVARCHAR(2))
IF @H>=12
BEGIN
SET @C='PM'
SET @H=24-12
SET @T=CAST(@H AS NVARCHAR(2))
END
SET @R=REPLACE(@R,N'hh',@T)
SET @R=REPLACE(@R,N'h',@T) SET @T=CAST(@MI AS NVARCHAR(2))
IF @MI<10 SET @T=N''+CAST(@MI AS NVARCHAR(2))
SET @R=REPLACE(@R,N'mi',@T) SET @T=CAST(@SS AS NVARCHAR(2))
IF @SS<10 SET @T=N''+CAST(@SS AS NVARCHAR(2))
SET @R=REPLACE(@R,N'ss',@T)
SET @R=REPLACE(@R,N'si',@T) SET @T=CAST(@MS AS NVARCHAR(3))
IF @MS>=0 AND @MS<10 SET @T=N''+CAST(@MS AS NVARCHAR(1))
IF @MS>=10 AND @MS<100 SET @T=N''+CAST(@MS AS NVARCHAR(2))
SET @R=REPLACE(@R,N'ms',@T)
SET @R=REPLACE(@R,N'mss',@T) RETURN @R
END
GO -- 年月日
SELECT dbo.uF_DateFormat(getdate(),'yyyyMMdd',NULL)
SELECT dbo.uF_DateFormat(getdate(),'yyyy/MM/dd',NULL)
SELECT dbo.uF_DateFormat(getdate(),'yyyy-MM-dd',NULL)
SELECT dbo.uF_DateFormat(getdate(),'yyyy年MM月dd日',NULL) -- 年月日时分秒
SELECT dbo.uF_DateFormat(getdate(),'yyyyMMdd HH:mi:ss',NULL) -- 年月日时分秒 毫秒
SELECT dbo.uF_DateFormat(getdate(),'yyyy-MM-dd HH:mi:ss.ms',NULL)

SQL Server 扩展一个支持类似。net 时间格式化的标量函数~的更多相关文章

  1. Sql Server 中一个非常强大的日期格式化函数

    Sql Server 中一个非常强大的日期格式化函数Select CONVERT(varchar(100), GETDATE(), 0)-- 05 16 2006 10:57AMSelect CONV ...

  2. SQL Server分区表,能否按照多个列作为分区函数的分区依据(转载)

    问: Hi, I have a table workcachedetail with 40 million rows which has 8 columns.We decided to partiti ...

  3. SQL Server 扩展事件(Extented Events)从入门到进阶(1)——从SQL Trace到Extented Events

    由于工作需要,决定深入研究SQL Server的扩展事件(Extended Events/xEvents),经过资料搜索,发现国外大牛的系列文章,作为“学习”阶段,我先翻译这系列文章,后续在工作中的心 ...

  4. SQL Server 扩展事件(Extented Events)从入门到进阶(4)——扩展事件引擎——基本概念

    本文属于 SQL Server 扩展事件(Extented Events)从入门到进阶 系列 在第一二节中,我们创建了一些简单的.类似典型SQL Trace的扩展事件会话.在此过程中,介绍了很多扩展事 ...

  5. SQL Server 扩展事件(Extented Events)从入门到进阶(3)——通过界面操作Extented Event

    本文属于 SQL Server扩展事件(Extended Events)从入门到进阶 系列 对于接纳扩展事件,其中一个最大的障碍就是要对XML和XQuery有一定的了解以便分析数据.我们可以使用T-S ...

  6. SQL Server 扩展事件

    SQL Server 扩展事件(Extended Event)是用于服务器的常规事件处理系统,是追踪SQL Server系统运行状态的神器,同时也是一个日志记录工具,扩展事件完全可以取代SQL追踪(S ...

  7. SQL Server 扩展事件(Extented Events)从入门到进阶(2)——在GUI中创建基础扩展事件

    本文属于 SQL Server 扩展事件(Extented Events)从入门到进阶 系列 第一篇文章中提到了如何在Profiler中创建跟踪(trace),并以服务器端(server-side)跟 ...

  8. SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第1部分)

    为了缩小读取操作所涉及范围,本文首先着眼于简单的SELECT查询,然后引入执行更新操作有关的附加过程.最后你会读到,优化性能时SQLServer使用还原工具的相关术语和流程. 关系和存储引擎 如图所示 ...

  9. SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第3部分)(完结)

    一个简单的更新查询 现在应该知道只读取数据的查询生命周期,下一步来认定当你需要更新数据时会发生什么.这个部分通过看一个简单的UPDATE查询,修改刚才例子里读取的数据,来回答. 庆幸的是,直到存取方法 ...

随机推荐

  1. C# 给某个方法设定执行超时时间 C#如何控制方法的执行时间,超时则强制退出方法执行 C#函数运行超时则终止执行(任意参数类型及参数个数通用版)

    我自己写的 /// <summary> /// 函数运行超时则终止执行(超时则返回true,否则返回false) /// </summary> /// <typepara ...

  2. U3D外包、Unreal4外包、VR外包就找北京动点飞扬软件

    北京动点软件长年承接Unity3D(U3D外包)项目,我们制作各类型VR/AR游戏,虚拟现实,增强现实项目! 品质保证,售后完备. 联系请加QQ:372900288  电话:13911652504 我 ...

  3. android学习笔记54——ContentProvider

    ContentProvider ContentProvider用于实现数据共享. ContentProvider是不同应用程序之间进行数据交换的标准API,其以某种Uri的形式对外提供数据,允许其他应 ...

  4. mfc_随机数生成器

    vc++6.0 内涵图

  5. [Tex学习]编号

    \documentclass{ctexart}\usepackage{enumerate}\begin{document}\begin{enumerate}[{case}1]\item new\ite ...

  6. IIS部署WCF

    IIS部署WCF [转载自——http://www.cnblogs.com/starksoft/p/4992059.html] 1 部署IIS 1.1 安装WAS IIS原本是不支持非HTTP协议的服 ...

  7. django Q和F查询

    Q查询——对对象的复杂查询F查询——专门取对象中某列值的操作 Q查询1.Q对象(django.db.models.Q)可以对关键字参数进行封装,从而更好地应用多个查询,例如: from django. ...

  8. EBS密码安全的几个参数

    PROFILE Name 1.Signon Password Failure Limit 输入错误次数限制,一旦被锁定需要系统管理员重置解锁 除了后台表系统中没有的地方可以体现被锁定的现象 此功能使用 ...

  9. js方法之间的调用之——传参方法

    在最近项目需求中发现,完成一些功能的时候总是要调很多结构类似的方法,写起来很繁琐,所以就想写一个“万能”方法,是的代码更简洁.即:把一个方法作为参数传给这个“万能”方法,让它去执行你给定的方法,就类似 ...

  10. mysql主从复制的一些东西的整理

    最近给新上线的项目进行主从结构的搭建,因此整理些有用的东西出来,供作记录: 一.mysql主从复制的一般配置步骤: 1.准备两台数据库环境,或者单台多实例的环境,能够正常的启动和登陆. 2.配置my. ...