![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
皆様、新年明けましておめでとうございます。
早速ですが、date型でのbetweenについて教えてください。
SQL文
SELECT * FROM test WHERE date between date '2007-12-01' and date '2007-12-31'
を発行すると、2007-12-31のレコードがあるのに該当しません・・・
試しにSQL文を
SELECT * FROM test WHERE date between date '2007-12-01 00:00:00' and date '2007-12-31 23:59:59'
としても2007-12-31のレコードは検索されません・・・
SQL文を
SELECT * FROM test WHERE date between date '2007-12-01' and date '2008-01-01'
にすると2007-12-31が該当するのですが、
SELECT * FROM test WHERE date between date '2007-12-01' and date '2007-12-31'
では2007-12-31のレコードは該当しないものでしょうか??
select * from test where num between 10 and 100
とした場合では、num が 10 ~ 100 のものが問い合わされますよね??
date型になるとこうならないのでしょうか??
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
No.1です。
列の属性をtimestampにして実行してみました。
Welcome to psql 8.2.0, the PostgreSQL interactive terminal.
farm=# create table testtbl6 (hoge timestamp);
CREATE TABLE
farm=# insert into testtbl6 values('2007-12-31');
INSERT 0 1
farm=# select * from testtbl6;
hoge
---------------------
2007-12-31 00:00:00
(1 row)
farm=# select * from testtbl6 where hoge between '2007-01-01' and '2007-12-31';
hoge
---------------------
2007-12-31 00:00:00
(1 row)
farm=# select * from testtbl6 where hoge between date '2007-01-01' and date '2007-12-31';
hoge
---------------------
2007-12-31 00:00:00
(1 row)
●時間だけを多少進めたデータを追加してみました
farm=# insert into testtbl6 values('2007-12-31 01:00:00');
INSERT 0 1
farm=# select * from testtbl6;
hoge
---------------------
2007-12-31 00:00:00
2007-12-31 01:00:00
(2 rows)
farm=# select * from testtbl6 where hoge between '2007-01-01' and '2007-12-31';
hoge
---------------------
2007-12-31 00:00:00
(1 row)
farm=# select * from testtbl6 where hoge between date '2007-01-01' and date '200
7-12-31';
hoge
---------------------
2007-12-31 00:00:00
(1 row)
よって、あなたのDBに登録してあるデータは、2007-12-31と午前0時を少し回っているデータが登録されているため、
検索でヒットしないのではないのでしょうか?
No.2
- 回答日時:
>●dateカラムの型はtimestampとなっております。
date型と timestamp型は別物ですよ。
キチンと区別して下さいね。
-------------------------------------------------------------
>SELECT * FROM test WHERE date between date '2007-12-01 00:00:00' and date '2007-12-31 23:59:59'
時間を指定するなら、下記では?
dateなら、時間の部分は切り捨てられます。
SELECT * FROM test WHERE hoge between timestamp '2007-12-01 00:00:00' and timestamp '2007-12-31 23:59:59';
-------------------------------------------------------------
又は、型変換で date型に変換してみるとか、どうでしょう?
SELECT * FROM test WHERE date(hoge) between date '2007-12-01' and date '2007-12-31';
No.1
- 回答日時:
>SELECT * FROM test WHERE date between date '2007-12-01' and date '2007-12-31'
where の右横のdateはbetweenする列名に変更してください。
当方の実行結果を貼り付けます↓
farm=# create table testtbl5 (hiduke date);
CREATE TABLE
farm=# insert into testtbl5 values ('2007-12-31');
farm=# select * from testtbl5;
hiduke
------------
2007-12-31
(1 row)
farm=# select * from testtbl5 where hiduke between '2007-01-01' and '2007-12-31';
hiduke
------------
2007-12-31
(1 row)
この回答への補足
ご返答ありがとうございます。
> where の右横のdateはbetweenする列名に変更してください。
●まぎらわしかったですが、dateは参考までで、カラム名だと思ってください。
> farm=# create table testtbl5 (hiduke date);
●dateカラムの型はtimestampとなっております。
これでも該当ありとなるでしょうか??
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- 英語 "an amount of"の意味等について 2 2023/06/13 12:19
- 公認会計士・税理士 会計学初心者です。 xeroという会計ソフトを実際に使用して決算整理仕訳?を行うという課題が出ました 1 2022/10/07 14:57
- Visual Basic(VBA) swiftで年号を 1 2023/02/05 06:48
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルを読み込んでテーブ...
-
シーケンシャル番号
-
(Linux、データベース初心者)...
-
データがリストアできない!!
-
SELECT文で足し算をした場合、N...
-
エクセルVBEについて
-
SELECT INTOで一度に複数の変数...
-
フラグをたてるってどういうこ...
-
既存データをINSERT文にして出...
-
【SQL】他テーブルに含まれる値...
-
Accessの構成をコピーしたい
-
truncate tableを使って複数の...
-
sqlに記述できない文字
-
T-SQLで任意の箇所で強制終了す...
-
オラクルのUPDATEで複数テーブル
-
データ無し時は空白行にしたい...
-
pandasでsqlite3にテーブル作成...
-
右向き、左向きの速度が最大と...
-
データ削除とSQL*Loaderでのイ...
-
エクセルvbaでpostgresに接続を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルを読み込んでテーブ...
-
timestamp が空のデータを除い...
-
テキストボックスの背景をVB...
-
エクセルVBA 10分後にエクセル...
-
SQLSERVER 連番更新について
-
ACCESS テキストボックスに入...
-
データがリストアできない!!
-
(Linux、データベース初心者)...
-
SELECT文で足し算をした場合、N...
-
PostgreSQL serial型の質問
-
Japanese schools tests
-
Accessエクスポート時に連番を...
-
平均値のもとめ方
-
エクセルVBEについて
-
date型でのbetweenについて教え...
-
コマンドプロンプトのエラー
-
AVR studio6でeepromリードでき...
-
phpからquery実行
-
シーケンシャル番号
-
SQL SERVERの BULK INSERT
おすすめ情報