• SQL日期格式,转自will哥


    我之前一直認為 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 的詳細說明。

    相關連結

  • 相关阅读:
    HTML 页面的 批量删除的按钮
    HTML 选择器
    ....
    java 反射机制
    插件库
    向上滚动
    浮动元素定位float
    中文字体对应的英文名称
    echarts入门教程
    ie9浏览器window.openbug
  • 原文地址:https://www.cnblogs.com/zhuzhu861618/p/4709906.html
Copyright © 2020-2023  润新知