SQLServer 日付 yyyy/mm/ddに変換 よく使う日付変換

SQLServerで日付型のデータを、文字列型の「yyyy/mm/dd」に変換する方法を
いつも忘れてしまうので、備忘録として残しておきます。

 

SQLServer 日付型 yyyymmdd変換

 

CONVERT

日付型を、文字列型の「yyyymmdd」フォーマットするには、CONVERTもしくはFORMATを使う必要があります。
まずは、CONVERTを見てみましょう、使い方は、このようになります。

CONVERT(NVARCHAR, 日付 ,指定するフォーマット選択)

 

3つ目のパラメータの「指定するフォーマット」を忘れてしまうので、よく使う例を記載しておきます。

SELECT 
  CONVERT(NVARCHAR,  GETDATE(), 111) AS 'yyyy/MM/dd'
 ,CONVERT(NVARCHAR, GETDATE(), 11) AS 'yy/MM/dd'
 ,CONVERT(NVARCHAR, GETDATE(), 112) AS 'yyyymmdd'
 ,CONVERT(NVARCHAR, GETDATE(), 12) AS 'yyMMdd'
 ,CONVERT(NVARCHAR, GETDATE(), 108) AS 'HH:mm:ss'

yyyy/MM/dd|yy/MM/dd|yyyyMMdd|yyMMdd|HH:mm:ss
----------+--------+--------+------+--------
2020/03/19|20/03/19|20200319|200319|21:27:49

 

このように、3つ目のパラメータによって取得できる形が変わるので、気を付けてください。

ちなみに、GETDATE()で現在の日付を取得することができます。

 

FORMAT

続いて、FORMATを使用してみましょう。

FORMATの方がわかりやすくて、おすすめなのですが、SQLServerのバージョンが古いと使用できません。(SQLServer2012以降しか使えません)
プロジェクトによっては、使えないことがあるので注意してください。

使い方を見てみましょう。

FORMAT(日付,'yyyy/MM/dd')

 

CONVERTに比べて、FORMATだと直接「yyyy/MM/dd」を使えるので使いやすいですね。

SELECT
  FORMAT(GETDATE(),'yyyy/MM/dd') AS 'yyyy/MM/dd'
 ,FORMAT(GETDATE(),'yy/MM/dd') AS 'yy/MM/dd'
 ,FORMAT(GETDATE(),'yyyyMMdd') AS 'yyyyMMdd'
 ,FORMAT(GETDATE(),'yyMMdd') AS 'yyMMdd'
 ,FORMAT(GETDATE(),'HH:mm:ss') AS 'HH:mm:ss'

yyyy/MM/dd|yy/MM/dd|yyyyMMdd|yyMMdd|HH:mm:ss
----------+--------+--------+------+--------
2020/03/19|20/03/19|20200319|200319|21:27:49

 

FOTMATの方が直感的にわかりやすいので、個人的には好きです。

FORMATの大文字の「MM」は月、小文字の「mm」は分、になるので気を付けましょう。

 

まとめ

SQLServerで日付の型変換は、「CONVERT 」、「FORMAT」を使用しましょう。

それぞれ使いやすい方を使用してください。

ただし、FORMATは、SQLServer2012以降のみでしか使えないので気を付けてくださいね。

 

SQLServerの記事一覧

 

 

コメント一覧
  1. やまちゃん より:

    はじめまして。やまちゃんと申します。
    ネット検索して貴殿のブログにたどり着きました。
    私も現在VS2019+VBでWebシステムの勉強をしているところです。
    今新たな問題にぶつかり、3日程解決策を模索しておりますが、見つからずに困惑しているところです。

    もし方法がお分かりになりました是非アドバイスをお願いします。
    【状況】
    Webフォームに入力用のテキストボックス(TextMode="Date")を配置し、Access2010の日付形式の項目を
    代入したいのですが、ネットで検索したいろんな手を使っても表示されません。
    状況としてはフォーム上のテキストボックスには「 年/月/日」が表示さているだけです。
    試しにテスト用の別フォームを作りDateTime.Today.ToString("yyyy-MM-dd")を代入したところ表示されました。
    これを元にFormat関数等を使って試しましたが今のところ解決には至っておりません。

    是非アドバイスをいただければと思います。
    よろしくお願いいたします。

  2. やまちゃん より:

    度々申し訳ございません。
    自己解決できました。

    次の方法で代入出来ました。
    TxtDate.Text = DateTime.Parse(dr("inpdate")).ToString("yyyy-MM-dd")

    今後もブログを参考にさせていただきます。

コメントを残す

関連キーワード
SQLの関連記事
おすすめの記事