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. Java项目下jar包的放置

    build path:引用 web-inf/lib:固定 eclipse编译项目是根据build path的.如果不用eclipse来发布项目的话,就会找不到jar. tomcat运行时首先在它自己的 ...

  2. BizTalk 中使用 WCF-OracleDB adapter

    在使用BizTalk WCF-OracleDB adapter操作Oracle数据库时,遇到了一些问题,记录如下. 按照BizTalk的文档,目前BizTalk 2010支持的Oracle数据库版本如 ...

  3. C++常见gcc编译链接错误解决方法

    除非明确说明,本文内容仅针对x86/x86_64的Linux开发环境,有朋友说baidu不到,开个贴记录一下(加粗字体是关键词): 用“-Wl,-Bstatic”指定链接静态库,使用“-Wl,-Bdy ...

  4. Java 大数运算

    import java.util.*; import java.math.*; public class Main{ public static void main(String args[]){ S ...

  5. oracle查询小结

    一.查询某表中某列值相同的记录: select * from t_acct_map where acct_id in (     select acct_id from t_acct_map grou ...

  6. PHP使用feof()函数读文件的方法

    这篇文章主要介绍了PHP使用feof()函数读文件的方法,以实例形式对比了正确与错误的用法,阐明了feof()函数的使用技巧,需要的朋友可以参考下 本文实例讲述了PHP使用feof()函数读文件的方法 ...

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

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

  8. 剑指Offer:面试题20——顺时针打印矩阵(java实现)

    题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数 字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1, ...

  9. LoadRunner 多场景批处理

    @echo off echo *********************************echo ****多场景测试*************echo ******************** ...

  10. 在autoit中如何将combobox设置为只允许选择不允许输入呢

    在autoit中如何将combobox设置为只允许选择不允许输入呢?只需要将设置style    $CBS_DROPDOWNLIST,默认的是$CBS_DROPDOWN既能输入也能选择.代码设置如下: ...