我之前一直認為 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. WAMP虚拟目录的设置

    1.打开Apache的配置文件httpd.conf,并去掉#Include conf/extra/httpd-vhosts.conf前面的#!! 2.打开Apache的apache/conf/extr ...

  2. 读写hdfs文件(工作笔记)

    import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.Map; ...

  3. AndroidUI设计之布局-详细解析布局实现

    写完博客的总结 : 以前没有弄清楚的概念清晰化 父容器与本容器属性 : android_layout...属性是本容器的属性, 定义在这个布局管理器的LayoutParams内部类中, 每个布局管理器 ...

  4. 用Spring+Junit4.4进行测试(使用注解)

    http://nottiansyf.iteye.com/blog/345819 使用Junit4.4测试 在类上的配置Annotation @RunWith(SpringJUnit4ClassRunn ...

  5. CentOS下安装Redis及Redis的PHP扩展

    1.安装Redis 1.1 如果没有安装wget,安装wget yum install wget 1.2 在http://redis.io/download页面查看redis版本,并下载安装 wget ...

  6. 【摘】linux中fstab解说

    https://wiki.archlinux.org/index.php/Fstab_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) 一个简单的 /etc/fstab,使 ...

  7. 缩略信息是: sending message to a Handler on a dead thread 我是用IntentService时报的

    稍微纤细一点儿的信息是: Handler (android.os.Handler) {215ddea8} sending message to a Handler on a dead thread. ...

  8. loadrunner录制脚本如何选择使用get请求和post请求的方式

    在loadrunner工具里录制脚本时常常会用到get请求和post请求,有关loadrunner常用的这两类的请求主要有: get请求: web_url 和 web_link post请求: web ...

  9. STL之序列容器vector

    首先来看看vector的模板声明: template <class T, class Alloc = allocator<T>> class vector { //… }; v ...

  10. 深入探索c++对象模型

    第一章关于对象 c++在布局和存取时间的额外负担主要有virtual引起 virtual function:运行期动态绑定 virtual base class :base class多次出现在派生类 ...