SQL Serverでは、 CONVERT()
を使用できます。 日付値をある日付データ型から別の日付データ型に(または他のデータ型間で)変換する関数。ただし、データ型間で変換するためのT-SQLツールボックスの機能はこれだけではありません。
CAST()
関数はANSISQL標準の一部であり、ほとんどのことを実行します。 CONVERT()
します。そのため、多くの場合、これらの機能のどれを使用するかを選択できます。
多くのデータベース専門家はCAST()
を好みます ただし、これはANSI SQL標準の一部であるため、 CONVERT()
を好む人もいます。 T-SQLの実装が提供する追加機能(日付スタイルを提供できるなど)が原因です。
いずれにせよ、この記事では、 CAST()
を使用して異なる日付形式間で変換する例を示します。 。
構文
構文は次のようになります:
CAST ( expression AS data_type [ ( length ) ] )
これらの引数は次のように定義されています。
式
- 有効な式。
-
data_type
- ターゲットデータ型。これには、 xmlが含まれます 、 bigint 、および sql_variant 。エイリアスデータ型は使用できません。
長さコード>
- ターゲットデータ型の長さを指定するオプションの整数。デフォルト値は
30
です 。
例1-SYSDATETIME()を日付としてキャスト
この例では、 SYSDATETIME()
を使用して現在の日付/時刻を生成します。 関数を作成し、戻り値を日付としてキャストします データ型。
SYSDATETIME()
に注意してください その値をdatetime2(7)として生成します データ型なので、そのデータ型から別のデータ型に変換しています。
SELECT SYSDATETIME() AS Original, CAST(SYSDATETIME() AS date) AS Converted;
結果:
+-----------------------------+-------------+ | Original | Converted | |-----------------------------+-------------| | 2018-06-07 00:15:32.9265884 | 2018-06-07 | +-----------------------------+-------------+
例2– SYSDATETIME()をsmalldatetimeとしてキャストします
この例では、日付を smalldatetimeとしてキャストします。 データ型。
SELECT SYSDATETIME() AS Original, CAST(SYSDATETIME() AS smalldatetime) AS Converted;
結果:
+-----------------------------+---------------------+ | Original | Converted | |-----------------------------+---------------------| | 2018-06-07 00:16:05.5142017 | 2018-06-07 00:16:00 | +-----------------------------+---------------------+
例3– SYSDATETIME()をdatetimeoffsetとしてキャストします
この例では、日付を datetimeoffsetとしてキャストします。 データ型。
SELECT SYSDATETIME() AS Original, CAST(SYSDATETIME() AS datetimeoffset) AS Converted;
結果:
+-----------------------------+------------------------------------+ | Original | Converted | |-----------------------------+------------------------------------| | 2018-06-07 10:19:23.9457462 | 2018-06-07 10:19:23.9457462 +00:00 | +-----------------------------+------------------------------------+
例4– SYSDATETIME()を時間としてキャストする
値の日付コンポーネントを表示することに限定されません。 時間としてキャストすることもできます データ型。時間コンポーネントのみが返されます。このように:
SELECT SYSDATETIME() AS Original, CAST(SYSDATETIME() AS time) AS Converted;
結果:
+-----------------------------+------------------+ | Original | Converted | |-----------------------------+------------------| | 2018-06-07 00:20:21.5829364 | 00:20:21.5829364 | +-----------------------------+------------------+
例5– SYSDATETIMEOFFSET()を日付としてキャストする
別の関数を使用して元の日付/時刻の値を生成する例を次に示します。
SELECT SYSDATETIMEOFFSET() AS Original, CAST(SYSDATETIMEOFFSET() AS date) AS Converted;
結果:
+------------------------------------+----------------------+ | Original | Converted | |------------------------------------+----------------------| | 2018-06-07 10:21:16.3617030 +10:00 | 2018-06-07 | +------------------------------------+----------------------+
例6–データベースクエリからの変換
WideWorldImportersの列から取得した日付を変換する例を次に示します。 サンプルデータベース:
USE WideWorldImporters; SELECT DISTINCT TOP 10 LastEditedWhen, CAST(LastEditedWhen AS date) AS 'Converted' FROM Sales.CustomerTransactions;
結果:
+-----------------------------+-------------+ | LastEditedWhen | Converted | |-----------------------------+-------------| | 2013-01-02 11:30:00.0000000 | 2013-01-02 | | 2013-01-03 11:30:00.0000000 | 2013-01-03 | | 2013-01-04 11:30:00.0000000 | 2013-01-04 | | 2013-01-05 11:30:00.0000000 | 2013-01-05 | | 2013-01-06 11:30:00.0000000 | 2013-01-06 | | 2013-01-08 11:30:00.0000000 | 2013-01-08 | | 2013-01-09 11:30:00.0000000 | 2013-01-09 | | 2013-01-10 11:30:00.0000000 | 2013-01-10 | | 2013-01-11 11:30:00.0000000 | 2013-01-11 | | 2013-01-12 11:30:00.0000000 | 2013-01-12 | +-----------------------------+-------------+
CONVERT()
を使用して日付形式を変換する方法を示す投稿も作成しました 上記と同じ例を使用して関数を作成します。