MS-SQL Serverで日付をWhereするには

VB6,VBA,VBS,EXCEL,DOS,BAT,WSH,WORDの小技メモ

HTML/ CSS/ CGI-Perl/ JavaScript/ JavaApplet/ AccessUp/ Internet/ EnglishLearn/ ちゃいちゃん天使/ 天使メッセージ/ 飯田ワールド/ 結城ワールド/ プロフィール/ WEB相談室/ WEBアンテナ/ 燈明日記/ Perlノート/ 漢字起源/ yahoo

はじめに

本ページは、ウインドウズ系全般のティプスメモです。

そう、はじめはVB系のティプスメモだったのですが…いつの間にか、ウインドウズ系全般のティプスメモになってしまいました。

ちなみに、ティプス(Tips)とは、マニュアルに書かれていない技法や裏わざのことですが、本ページでは、私が経験してこれはと思ったノウハウのメモになっています。

尚、以下は本サイトの最新情報(ブログ)です。

それでは、本ページが何かのお役に立てれば幸いです。ごゆっくりご覧ください。

◆ MS-SQL Serverで日付をWhereするには

日付データをWhereする時、普通の文字列と同じように考えてしまい、残念な思いをすることがよくあります。 普通、日付データは、文字列型ではなくdatetime型です。 datetime型をWhereするときは、以下のような単一引用符 (') で囲まれた形式の文字列が、実は日付時刻データとして認識されるのです。

つまり、2006年9月15日なら、2006/9/15、2006/09/15、2006-9-15、2006-09-15、20060915でマッチします。

尚、日付の年月日形式(ymd)は、SQL Serverのdefault languageで決まります。 ymd (年、月、日)の順は、default languageがJapaneseの場合です。

また、datetime型データには、日付データだけでなく時刻データも入っているので、大小比較は注意が必要です。

たとえば、2006/09/13のデータが欲しいときは

Where YMD = '2006/09/13'

でなく

Where YMD >= '2006/09/13' And YMD < '2006/09/14'

となります。

YMD = '2006/09/13' だと YMD = '2006/09/13 00:00:00.000' と等価になってしまうのです。

ちなみに、SQL Server には、datetime 型以外に smalldatetime 型 (短精度日付/時間型) があります。

また、ちなみに、時刻だけまたは日付だけを個別に格納するデータ型はありません。 datetime 型または smalldatetime 型の値を設定する場合、 時刻だけを指定すると、日付のデフォルト "January 1, 1900" が使用されます。 日付だけを指定すると、時刻のデフォルト "12:00AM (深夜)" が使用されます。

おわりに

以下のページには、すべてのTIPSがあります。もしよろしければ、どうぞ!

尚、ご感想、ご意見、誤字、脱字、間違い等がありましたら遠慮なくVB-TIPS掲示板へご指摘ください。