我之前一直認為 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. PHPCMS v9 超级安全防范教程!

    一.目录权限设置很重要:可以有效防范黑客上传木马文件.如果通过 chmod 644 * -R 的话,php文件就没有权限访问了.如果通过chmod 755 * -R 的话,php文件的权限就高了. 所 ...

  2. Spark BlockManager的通信及内存占用分析(源码阅读九)

    之前阅读也有总结过Block的RPC服务是通过NettyBlockRpcServer提供打开,即下载Block文件的功能.然后在启动jbo的时候由Driver上的BlockManagerMaster对 ...

  3. Python基础(二)之list

    列表:用[]表示 常用方法: list.append,list.insert,list.remove,list.pop,list.count,list.sort,list.reverse,list.i ...

  4. mac上启动和停止mysql

    因调试需要,在mac上安装了mysql,安装方法网上大把,此处不赘述.启动和停止命令每次要手工敲,因此写个小脚本方便自己: startmysql.sh(/Applications/Develop/my ...

  5. php redis 安装篇(windows 7)

    人人都说redis比memcached好,但是没有实际体验过,概念还是比较模糊,今天就先把redis安装好,后面的体验再分享,由于php已经有了很好的扩展库支持,所以redis安装非常方便,下面是wi ...

  6. this关键字

    class Demothis关键字//哪个对象在调用this所在的函数,this就代表哪个对象.{ //当定义类中功能时,该函数内部要用到该函数的对象时,这时用this来表示这个对象. public ...

  7. ios录音、音频播放功能

    #import <AVFoundation/AVFoundation.h> { NSInteger   _timeCount;    NSTimer     *_timer; } @pro ...

  8. java文件名更改一直是false,看看是否是文件打开没有关

    // 更改文件名称 public static void chenckFileName(String oldFile, String newFileName) { File file = new Fi ...

  9. I/O系统 (输入/输出)

    I/O系统 1:流: (1)判断到底是输入,还是输出:永远站在程序的立场上: (2)判断传递的到底是字节还是字符,从而决定管道的粗细: 字节管道可以传递所有数据,字符管道专门用来传递文本数据(1个字符 ...

  10. shell 脚本,提取文件中的内容

    使用awk.cut.sed.if.while 等 awk.cut.sed还是很重要的 这是后来修改的,可以完成 #!/bin/bash #conver formatFILE=mobile_dpi.ru ...