1110 Lt
- 4. データ型 最小値 最大値 精度
datetime 1753-01-01 00:00:00.000 9999-12-31 23:59:59.997 3.33 ミリ秒
smalldatetime 1900-01-01 00:00:00 2079-06-06 23:59:00 1分
2種類の日付時刻型
- 5. データ型 最小値 最大値 精度
datetime 1753-01-01 00:00:00.000 9999-12-31 23:59:59.997 3.33 ミリ秒
smalldatetime 1900-01-01 00:00:00 2079-06-06 23:59:00 1分
日付専用、時刻専用のデータ型は無い
日付と時刻の両方保持する
今日の時間を記録したつもりが・・・
insert into ss2005 values ('13:20:20','13:20:20')
datetime smalldatetime
1 1900-01-01 13:20:20.000 1900-01-01 13:20:20
- 6. データ型 最小値 最大値 精度
datetime 1753-01-01 00:00:00.000 9999-12-31 23:59:59.997 3.33 ミリ秒
smalldatetime 1900-01-01 00:00:00 2079-06-06 23:59:00 1分
指定できる過去の日付に注意
平安京(794年)
関ヶ原の合戦(1600年)が登録できない
insert into ss2005 values (‘794/1/1',‘1600/01/01')
varchar データ型からdatetime データ型への変換の結果、範囲外の値
になりました。
- 7. データ型 最小値 最大値 精度
datetime 1753-01-01 00:00:00.000 9999-12-31 23:59:59.997 3.33 ミリ秒
smalldatetime 1900-01-01 00:00:00 2079-06-06 23:59:00 1分
精度に注意
smalldatetimeでは・・・
insert into ss2005 values('13:20:29.998','13:20:29.999’)
smalldatetime smalldatetime
1 1900-01-01 13:20:00 1900-01-01 13:21:00
- 9. データ型 最小値 最大値 精度
time 00:00:00.0000000 23:59:59.9999999 100ナノ秒
date 0001-01-01 9999-12-31 1日
datetime2 0001-01-01 00:00:00.0000000 9999-12-31 23:59:59.9999999 100ナノ秒
datetimeoffset 0001-01-01 00:00:00.0000000 9999-12-31 23:59:59.9999999 100ナノ秒
新たに4種類追加された
- 10. データ型 最小値 最大値 精度
time 00:00:00.0000000 23:59:59.9999999 100ナノ秒
date 0001-01-01 9999-12-31 1日
datetime2 0001-01-01 00:00:00.0000000 9999-12-31 23:59:59.9999999 100ナノ秒
datetimeoffset 0001-01-01 00:00:00.0000000 9999-12-31 23:59:59.9999999 100ナノ秒
日付専用、時刻専用データ型が登場
- 11. データ型 最小値 最大値 精度
time 00:00:00.0000000 23:59:59.9999999 100ナノ秒
date 0001-01-01 9999-12-31 1日
datetime2 0001-01-01 00:00:00.0000000 9999-12-31 23:59:59.9999999 100ナノ秒
datetimeoffset 0001-01-01 00:00:00.0000000 9999-12-31 23:59:59.9999999 100ナノ秒
過去の日付が拡大
平安京(794年)
江戸幕府(1600年)も問題なし
- 12. データ型 最小値 最大値 精度
time 00:00:00.0000000 23:59:59.9999999 100ナノ秒
date 0001-01-01 9999-12-31 1日
datetime2 0001-01-01 00:00:00.0000000 9999-12-31 23:59:59.9999999 100ナノ秒
datetimeoffset 0001-01-01 00:00:00.0000000 9999-12-31 23:59:59.9999999 100ナノ秒
時刻の「秒」の有効桁数を設定できるよう
になった
CREATE TABLE [dbo].[ss2008](
[t] [time](7) NULL,
[dt2] [datetime2](7) NULL,
[dto] [datetimeoffset](7) NULL
) ON [PRIMARY]
- 13. データ型 最小値 最大値 精度
time 00:00:00.0000000 23:59:59.9999999 100ナノ秒
date 0001-01-01 9999-12-31 1日
datetime2 0001-01-01 00:00:00.0000000 9999-12-31 23:59:59.9999999 100ナノ秒
datetimeoffset 0001-01-01 00:00:00.0000000 9999-12-31 23:59:59.9999999 100ナノ秒
Datetime2はdatetimeの改良版
ストレージサイズ
Datetime :8バイト
Datetime2:6~8バイト
- 15. 形式の種類 形式の例 DATEFORMAT SET LAMGAGE 多言語
への依存 への依存 対応
区切りなし '19980223 14:23:05' 非依存 非依存 可
数値 '02/23/1998 14:23:05' 依存 依存 不可
ANSI SQL '1998-12-23 14:23:05' 非依存 依存 可
(datetime2,dateti (smalldate,datet (date,datetim
meoffset2) e2,datetimeoff
ime) set)
依存(datetime)
アルファベット '23 February 1998 14:23:05' 非依存 依存(月の名前) 不可
ODBC日付時刻 {ts '1998-02-23 14:23:05'} 非依存 非依存 可
ODBC日付 {d '1998-02-23'} 非依存 非依存 可
ODBC時刻 {t '14:23:05'} 非依存 非依存 可
ISO8601 '1998-02-23T14:23:05' 非依存 非依存 可
時刻 '14:23:05' 非依存 非依存 可
'2:23:05 PM'
- 16. 登録時のフォーマットを記録しない
日付・時刻を内部形式で保持する
insert into ss2005 values('10/31/2008 11:20:29 PM','20081031 13:20:29')
datetime smalldatetime
1 2008-10-31 23:20:29.000 2008-10-31 13:20:00
- 17. SQL Server 2008の新しいデータ型
ANSI SQL標準が推奨
年(yyyy形式)ではじまっている限り言語、設定に依存
しない
「年・月・日」と解釈する
insert into ss2008 values('2008/10/31','20081031','2008-10-31')
「月」が最初に来ると言語依存
- 18. 日付時刻型
SQL Server2005では、細かいところで注意が
必要
SQL Server 2008でかゆいところに手が届く
ようになった
日付フォーマット
言語中立、設定非依存のものを選択しましょ
う
- 19. Tibor Karaszi‘s SQL Server pages The
ultimate guide to the datetime datatypes
http://www.karaszi.com/SQLServer/info_datetime.asp
SQL Server 2008 オンライン ブック
日付および時刻データ型
▪ http://technet.microsoft.com/ja-jp/library/ms186724.aspx#
日時データの使用
▪ http://technet.microsoft.com/ja-jp/library/ms180878.aspx
SQL Server 2005 Books Online (2007 年 9 月)
日付と時刻 (Transact-SQL)
▪ http://technet.microsoft.com/ja-
jp/library/ms187819(SQL.90).aspx