我之前一直認為 SQL Server 針對日期處理的函數不夠多(如果跟 MySQL 比較),尤其是處理日期欄位轉字串的時候,常常因為要輸出特定的格式而懊惱不已,常常一不小心就寫了一長串,很不易閱讀。

例如說初學者可能為了輸入一個 "2008-2-27" 的格式會這樣寫:

[code:tsql]

select convert(varchar(4),Year(getdate())) + '-' + convert(varchar(2), month(getdate()))+ '-' + convert(varchar(2), day(getdate()))

[/code]

但如過客戶要求 "2008-02-27" 這種格式呢?!我看會寫瘋掉了,你可能會這樣寫:

[code:tsql]

select convert(varchar(4),Year(getdate())) + '-' + CASE month(getdate()) WHEN  1 THEN '0' + convert(varchar(2), month(getdate())) WHEN  2 THEN '0' + convert(varchar(2), month(getdate())) WHEN  3 THEN '0' + convert(varchar(2), month(getdate())) WHEN  4 THEN '0' + convert(varchar(2), month(getdate())) WHEN  5 THEN '0' + convert(varchar(2), month(getdate())) WHEN  6 THEN '0' + convert(varchar(2), month(getdate())) WHEN  7 THEN '0' + convert(varchar(2), month(getdate())) WHEN  8 THEN '0' + convert(varchar(2), month(getdate())) WHEN  9 THEN '0' + convert(varchar(2), month(getdate())) ELSE convert(varchar(2), month(getdate())) END +   '-' + CASE day(getdate()) WHEN  1 THEN '0' + convert(varchar(2), day(getdate())) WHEN  2 THEN '0' + convert(varchar(2), day(getdate())) WHEN  3 THEN '0' + convert(varchar(2), day(getdate())) WHEN  4 THEN '0' + convert(varchar(2), day(getdate())) WHEN  5 THEN '0' + convert(varchar(2), day(getdate())) WHEN  6 THEN '0' + convert(varchar(2), day(getdate())) WHEN  7 THEN '0' + convert(varchar(2), day(getdate())) WHEN  8 THEN '0' + convert(varchar(2), day(getdate())) WHEN  9 THEN '0' + convert(varchar(2), day(getdate())) ELSE convert(varchar(2), day(getdate())) END

[/code]

別笑!我真的看過有人這樣寫!呵呵~

其實 SQL Server 早就有個 CONVERT 函數可以幫我們做這件事!如果你要輸出 2008-02-27 這種日期格式的字串,可以這樣寫:

[code:tsql]

SELECT CONVERT(char(10), getdate(), 120)

[/code]

是不是短很多呢? ^__^

底下列出一些我常用的語法:

  • 輸出格式:2008-02-27 00:25:13
    SELECT CONVERT(char(19), getdate(), 120)
  • 輸出格式:2008-02-27
    SELECT CONVERT(char(10), getdate(), 20)
     
  • 輸出格式:2008.02.27
    SELECT CONVERT(char(10), getdate(), 102)
  • 輸出格式:08.02.27
    SELECT CONVERT(char(8), getdate(), 2)
  • 輸出格式:2008/02/27
    SELECT CONVERT(char(10), getdate(), 111)
  • 輸出格式:08/02/27
    SELECT CONVERT(char(8), getdate(), 11)
  • 輸出格式:20080227
    SELECT CONVERT(char(8), getdate(), 112)
  • 輸出格式:080227
    SELECT CONVERT(char(6), getdate(), 12)

想查詢完整的列表與說明可以到 MSDN 的 Transact-SQL Reference 去查詢 CAST and CONVERT 的詳細說明。

相關連結

SQL日期格式,转自will哥的更多相关文章

  1. SQL显示某月全部日期明细以及SQL日期格式

    SQL显示某月全部日期明细<存储过程> 方法一: declare @date datetime declare @end datetime ,getdate()) ,@date) crea ...

  2. sql 日期格式汇总

    SQLserver中用convert函数转换日期格式2008-01-15 15:51SQLserver中用convert函数转换日期格式 SQL Server中文版的默认的日期字段datetime格式 ...

  3. SQL日期格式

    ) :: ),'-',''),' ',''),':','') ) , ) ) , ) ) , ) ) , ) 其它不常用的日期格式转换方法: ) , ) ) , ) ) , ) ) , ) ) , ) ...

  4. sql日期格式小应用 记录一下

    比如这样的数据 20170317 要转成2017-03-17 单独一步做不到 两步思想 先转成日期格式 在进行格式化 select CONVERT(varchar(10),(CAST(CONVERT( ...

  5. sql日期格式处理

    sql server中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-02-01 ...

  6. sql 日期格式输出 - 转

    SELECT CONVERT(varchar(100), GETDATE(), 0) 05 9 2011 9:12AM SELECT CONVERT(varchar(100), GETDATE(), ...

  7. SQL日期格式转换

    CONVERT(nvarchar(20), [Date],101) as 'Date'    10/20/2016 CONVERT(nvarchar(20), [Date],102) as 'Date ...

  8. SQL日期格式转换(经常用又经常忘记的东西)转载自http://www.cnblogs.com/wangyuelang0526/archive/2012/06/06/2538224.html

    Select CONVERT(varchar(100), GETDATE(), 8):14:53:14Select CONVERT(varchar(100), GETDATE(), 9): 06 6 ...

  9. sql 日期格式

    select CONVERT(varchar(10), getDate(),121) --不要时间2002-01-01 select CONVERT(varchar(10), getDate(),12 ...

随机推荐

  1. XE6 & IOS开发之免证书真机调试(1):颁发属于自己的App签名证书(有图有真相)

    网上能找到的关于Delphi XE系列的移动开发的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 1.自己给自己颁发证书, ...

  2. JNI开发中String转换chat*工具

    char* Jstring2CStr(JNIEnv* env, jstring jstr) { char* rtn = NULL; jclass clsstring = env->FindCla ...

  3. 将txt文件转换成EXCEL文件的方法

    地址:http://wenku.baidu.com/view/fcdbe8cca1c7aa00b52acbad.html 1.在EXCEL程序中点击“打开”,将文件类型选择为“文本文件”,找到以前用过 ...

  4. tomcat7 ajax请求服务中文乱码

    在确保请求服务编码格式为utf-8的情况下,确保tomcat的配置 <Connector connectionTimeout="20000" port="8080& ...

  5. (Hibernate进阶)Hibernate映射——一对一双向关联映射(六)

    上一篇博客我们介绍了一对一的单向关联映射,单向是指只能从人(Person)这端加载身份证端(IdCard),但是反过来,不能从身份证端加载人得信息.如图所示: 关键原因在于对象模型具有方向性: 单向: ...

  6. URL特殊字符的转义

    + 转义符为 %2B 空格 转义符为 + 或 %20 / 转义符为 %2F ? 转义符为 %3F % 转义符为 %25 # 转义符为 %23 & 转义符为 %26 = 转义符为 %3D

  7. artTemplate 自动化编译之tmod

    一.背景 前端小白的成长历程,一般都会经历html模板的一些问题,jquery template/artTemplate/yayaTemplate等常见的模板使用,这里就不作介绍了. 先谈谈我们为什么 ...

  8. RequireJS 加载 easyui

    requireJS 可以让js加载起来比较优雅,像java里import一样.有了这个,我们可以创建自己的 js控件库,在需要时,页面中只引入 requireJS,然后通过代码方式引入需要用到的控件, ...

  9. dedecms讲解-arc.listview.class.php分析,列表页展示

    ./plus/list.php - 动态展示栏目列表页(也可能是频道封面)arc.listview.class.php 是dedecms的列表页的相关处理类__construct()         ...

  10. C语言PIC32 serial bootloader和C#语言bootloader PC端串口通信程序

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 今天介绍下我新完成的为 ...