SQL ServerのDATETIMEとは?文字列からの変換や注意点も紹介
- SE
- SQL ServerのDATETIMEについて教えてください。
- PM
- SQL ServerのDATETIMEとは日付型です。種類や使用方法を紹介します。
目次
SQL ServerのDATETIMEとは
SQL Serverにおいて、日付や時刻を扱いたいということは多くあると思います。そのような場合にはDATETIMEを代表とする日付型を使用します。
ここではSQL Serverでの日付型の扱い方を解説します。
SQL Serverの日付型の種類3つ
SQL Serverの日付および時刻のデータ型は複数の種類が存在します。その中でも代表的であり、よく使用される3つを紹介します。
それぞれについて形式と範囲を紹介しますので、目的に応じて使い分けるようにしましょう。
1:DATE
DATEは、日付のみを定義する日付型です。
形式と範囲は以下のとおりです。
- 形式:YYYY-MM-DD
- 範囲:0001-01-01 ~ 9999-12-31
2:DATETIME
DATETIMEは、1秒未満の秒を含む24時間形式の日時を定義する日付型です。
形式と範囲は以下のとおりです。
- 形式:YYYY-MM-DD hh:mm:ss[.nnn]
- 範囲:1753-01-01~9999-12-31
3:DATETIME2
DATETIME2は、1秒未満の秒を含む24時間形式の日時を定義する日付型です。
既存のDATETIME型を拡張して日付範囲と既定の有効桁数が増えており、必要に応じて有効桁数の指定が可能です。
形式と範囲は以下のとおりです。
- 形式:YYYY-MM-DD hh:mm:ss[.nnnnnnn]
- 範囲:0001-01-01~9999-12-31(時刻は00:00:00~23:59:59.9999999)
SQL Serverで文字列を日付型に変換する2つの方法
では、さっそく使い方を見ていきましょう。
CONVERTを使う方法3つ
CONVERTは任意の値を、指定したデータ型に変換するための関数です。
そして、CONVERT関数を使って文字列から日付型に変換する場合は、下記のように書きます。
1
|
CONVERT(日付型, 文字列, (スタイル))
|
※スタイルは省略可能です。
実際に書くと、このような記載になります。
1:年月日を指定
1
2
|
SELECT CONVERT(DATETIME, ‘20190101’)
結果|2019-01-01 00.00.00.000
|
2:年月日をスラッシュで区切る
1
2
|
SELECT CONVERT(DATETIME, ‘2019/01/01’)
結果|2019-01-01 00.00.00.000
|
3:日時を指定
1
2
|
SELECT CONVERT(DATETIME, ‘20190101 12:30:00’)
結果|2019-01-01 12:30:00.000
|
CASTを使う場合
CASTも、CONVERTと同様に値を任意のデータ型に変換することのできる関数です。
CASTを使う場合は以下のように書きます。
1
|
CAST(文字列 AS 日付型)
|
実際に書くと、このような記載になります。
年月日を指定
1
2
|
SELECT CAST(‘2019/01/01’ AS DATETIME)
結果|2019-01-01 00.00.00.000
|
日時を指定
1
2
|
SELECT CAST(‘2019/01/01 12:30:00’ AS DATETIME)
結果|2019-01-01 12:30:00.000
|
SQL ServerでDATETIMEを使う際の注意点
SQL ServerでDATETIME型を使用する場合、丸め誤差に注意する必要があります。
datetime型の精度では、秒数の小数3桁目が0、3、7のいずれかに丸められます。例えば、「00:00:00.214」という時刻は「00:00:00.213」に丸められます。
これにより、データを検索して取得する際に期待した結果が得られない場合がありますので注意しましょう。
- SE
- SQL ServerのDATETIMEは3種類あるのですね。
- PM
- はい。目的に応じて使い分けてみてください。
SQL ServerでDATETIMEを使って日付データを取得しよう
今回は、SQL Serverで使いやすい日付型や、文字列と日付型の変換方法を紹介しました。たかが日付型ですが、されど日付型です。深く考えずに日付型を指定すると、入力値が無かったときにバグが出るなど思わぬエラーに遭遇することもありますので、ぜひシステムに適した日付型を使うようにしてみてください。そして、正しく日付データを取得できるようにしましょう。
Search キーワード検索
Popular 人気の記事
-
【VB.NET入門】DataGridViewの使い方まとめ
公開: 更新:
reccomended おすすめ記事
-
【.NETが統合】.NET 5の概要と今後のリリース予定
公開: 更新:
Categories 連載一覧
Tags タグ一覧
Jobs 新着案件
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅) -
債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅)