我之前一直認為 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. dicom转换软件的一点头绪

    想用c#写一个由dicom格式转化为jpeg或者其他格式的文件 找到了这个类 fo-dicom类

  2. OAF_开发系列21_实现OAF事物控制TransactionUnitHelper(案例)

    20150716 Created By BaoXinjian

  3. innodb的锁

    观察innodb的锁时间,需要关注: mysqladmin extended-status -r -i 1 -uroot | grep "Innodb_row_lock_time" ...

  4. 移动web开发,12个触摸及多点触摸事件常用Js插件

    如今移动互联网已经占据了主流地位,越来越多的开发者开始从桌面转向移动平台.与桌面开发不同的是,在移动领域中,不同的操作系统.大量不同屏幕尺寸的移动设备.触摸手势操作等,这都给开发者带来了一定的难度和挑 ...

  5. IBM Power PC安装sysbench 执行mysql基准测试 --- sysbench安装

    第一步:下载Sysbench http://dev.mysql.com/downloads/benchmarks.html 第二步:解压sysbench 第三步:执行安装步骤 1. ./autogen ...

  6. 再看 AspriseOCR - OCR应用开发 -20151124

    再看 AspriseOCR - OCR应用开发 我写这个博文时间为 2015/11/24日,注意时间因为,网上很多文章时间上很久远,有的已经不能参考了 很多人面对从图片中识别文字或者数字0~9  A~ ...

  7. FreeBSD从零开始---安装后配置(一)

    一.安装后配置   上次我们说到FreeBSD的安装,这次我们说FreeBSD安装后的配置和简单优化方法.   安装完BSD只是服务器提供服务这条万里长征路的开始,还需要一些基本的设定和优化.不过实际 ...

  8. LibreOffice 打开中文乱码

    From: http://hi.baidu.com/designhouse/item/746130c01f98a42dee4665de 1:文件->打开 2:文件类型:已编码文本

  9. iisnode托管node

    1.官方下载iisnode https://github.com/tjanczuk/iisnode 2.安装完成后在IIS中可见

  10. 把CMSampleBufferRef转成Data

    CMSampleBufferRef ref=[output copyNextSampleBuffer]; NSLog(@"%@",ref); if(ref==NULL) break ...