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. android学习笔记57——Service_2

    Service生命周期 参考:http://codingnow.cn/android/515.html 应用程序启动服务的方式不同,其生命周期也有所不同. startService生命周期如下左图: ...

  2. 黄聪: Bootstrap之Form表单验证神器: BootstrapValidator(转)

    前言:做Web开发的我们,表单验证是再常见不过的需求了.友好的错误提示能增加用户体验.博主搜索bootstrap表单验证,搜到的结果大部分都是文中的主题:bootstrapvalidator.今天就来 ...

  3. 转,CV和resume的区别

    一直以来,BBS上的信息资料都传达给我一个网上“主流”的关于CV和resume的看法: CV约等于Resume,前者略倾向于学术,后者略倾向于工作经验,字数控制在1-2页内 说实话,一直以来我也就这么 ...

  4. Win32编程:窗口类样式+窗口外观样式+窗口显示样式

    1.窗口类样式WNDCLASS.style CS_VREDRAW 提供窗口位置变化事件和高度变化事件的处理程序,功能是重绘窗口 CS_HREDRAW 提供窗口位置变化事件和宽度变化事件的处理程序,功能 ...

  5. 如何删除控制文件中过去rman备份到磁带的备份集

    问题描述: 早上做数据库巡检,发现FRA(flash recovery area)空间使用率达到66%,是平时的两倍.由于库不大,备份策略是本地磁盘备份,每天一全备,REDUNDANCY 1 ,备份完 ...

  6. MysqlServer如何实现成功卸载,并成功安装

    MysqlServer卸载过程如下: (1).在控制面板或者通过其他卸载工具中,卸载MysqlServer. (2).打开C:\ProgramData---这个文件是隐藏的,需显示出来.在里面找到my ...

  7. 解决sqoop需要输入密码的问题

    修改配置文件:vi /etc/sqoop/conf/sqoop-site.xml <property> <name>sqoop.metastore.client.record. ...

  8. winform建立非矩形窗体

    非规则窗体可能会需要加的功能代码: 1:因为没有了最上边的标题栏,所以需要加窗体鼠标拖动功能,在Form里面加如下代码: #region 移动窗体 // 移动窗体 const int WM_NCLBU ...

  9. 10. Max Points on a Line

    Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. ...

  10. C++ 如何有效地使用对话框

    Q:如何在对话框中加入工具条 在 OnInitDialog 中加入下面代码: BOOL CYourDlg::OnInitDialog() { CDialog::OnInitDialog(); // C ...