C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: pgAdminV【年月の比較】


(過去ログ 98 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■58285 / inTopicNo.1)  pgAdminV【年月の比較】
  
□投稿者/ こたろう (5回)-(2011/03/30(Wed) 16:24:31)

分類:[データベース全般] 

2011/03/30(Wed) 16:31:34 編集(投稿者)

お世話になってます。
Windows XP
PostgreSQL
pgAdminV
を使用しています。

テーブル定義
CREATE TABLE Seles
(
seles_id bigserial NOT NULL, -- ID
seles_date date, -- 売上日
seles_price numeric(10,2) DEFAULT 0.0, -- 売上金額



CONSTRAINT seles_p PRIMARY KEY (seles_id)
)

軽く省略しましたが、このような
テーブルがあります。

Selesテーブルには
2010/03/30 100.00
2011/02/30 200.00
2011/03/30 300.00
という3つのデータが登録されています。

その中から、
現在の月の売上金額を取得したいです。
つまり、今日ですと
300.00を取得したいのです。

それをpgAdminV(ビュー)で実現することは可能ですか?

CREATE OR REPLACE VIEW Seles_view AS
SELECT
Seles.seles_id,
date_part('year_month'::text, Seles.seles_date) AS seles_ym,
date_part('year_month'::text, 'now'::text::date) AS now_ym
FROM Seles
ORDER BY Seles.seles_id;

このように定義したところ
Viewには何も表示されず
実現できませんでした。

もし、出来ないようであれば、
Visual studio 2010
C#
で、実現する方法を教えていただきたいです。
よろしくお願いいたします。
引用返信 編集キー/
■58288 / inTopicNo.2)  Re[1]: pgAdminV【年月の比較】
□投稿者/ shu (582回)-(2011/03/30(Wed) 16:49:29)
No58285 (こたろう さん) に返信

前回もちょっと思ったのですが、pgAdminVは管理ツールなので、pgAdminVで〜なデータ問い合わせが
出来ますかという質問は変です。PostgreSQLで〜な問い合わせを行うことは出来ますか?という方が
よいかと思います。



今月を条件(>= 1日 and <来月の1日)にしてSumを求めることにより可能です。


引用返信 編集キー/
■58290 / inTopicNo.3)  Re[2]: pgAdminV【年月の比較】
□投稿者/ こたろう (6回)-(2011/03/30(Wed) 17:00:45)
No58288 (shu さん) に返信
> ■No58285 (こたろう さん) に返信
>
> 前回もちょっと思ったのですが、pgAdminVは管理ツールなので、pgAdminVで〜なデータ問い合わせが
> 出来ますかという質問は変です。PostgreSQLで〜な問い合わせを行うことは出来ますか?という方が
> よいかと思います。
ご指摘ありがとうございます。
これから気をつけます!
>
>
> 今月を条件(>= 1日 and <来月の1日)にしてSumを求めることにより可能です。
今月(今日?)がいつなのかがわからないので
それを求めるにはどうすればいいですか?
引用返信 編集キー/
■58293 / inTopicNo.4)  Re[3]: pgAdminV【年月の比較】
□投稿者/ shu (583回)-(2011/03/30(Wed) 17:31:23)
2011/03/30(Wed) 17:36:37 編集(投稿者)

No58290 (こたろう さん) に返信

SELECT CURRENT_DATE, date_trunc('month',CURRENT_DATE), date_trunc('month',CURRENT_DATE) + interval '1 month'


ちなみに大文字を含むテーブル名、項目名は"で括る必要あります。ないと小文字で判断されます。
引用返信 編集キー/
■58295 / inTopicNo.5)  Re[4]: pgAdminV【年月の比較】
□投稿者/ こたろう (7回)-(2011/03/30(Wed) 17:58:35)
No58293 (shu さん) に返信
> 2011/03/30(Wed) 17:36:37 編集(投稿者)
>
> ■No58290 (こたろう さん) に返信
>
> SELECT CURRENT_DATE, date_trunc('month',CURRENT_DATE), date_trunc('month',CURRENT_DATE) + interval '1 month'
>
ありがとうございます。
上記を試したところ
{2011/03/30 0:00:00}となりました。
{2011/03/00 0:00:00}となると思っていたのですが・・・。

> ちなみに大文字を含むテーブル名、項目名は"で括る必要あります。ないと小文字で判断されます。
ありがとうございます。
テーブル名は小文字にしました。
引用返信 編集キー/
■58297 / inTopicNo.6)  Re[5]: pgAdminV【年月の比較】
□投稿者/ こたろう (8回)-(2011/03/30(Wed) 18:07:37)
No58295 (こたろう さん) に返信
> ■No58293 (shu さん) に返信
>>2011/03/30(Wed) 17:36:37 編集(投稿者)
>>
>>■No58290 (こたろう さん) に返信
>>
>>SELECT CURRENT_DATE, date_trunc('month',CURRENT_DATE), date_trunc('month',CURRENT_DATE) + interval '1 month'
>>
> ありがとうございます。
> 上記を試したところ
> {2011/03/30 0:00:00}となりました。
> {2011/03/00 0:00:00}となると思っていたのですが・・・。
>

すみません、勘違いをしていたので、
SELECT CURRENT_DATE
SELECT date_trunc('month',CURRENT_DATE)
SELECT date_trunc('month',CURRENT_DATE) + interval '1 month'
としてやり直しました。
そうすると、
{2011/03/30 0:00:00}
{2011/03/01 0:00:00}
{2011/04/01 0:00:00}
となりました。
{2011/03/00 0:00:00} のようにはならないのですか?
引用返信 編集キー/
■58300 / inTopicNo.7)  Re[6]: pgAdminV【年月の比較】
□投稿者/ こたろう (9回)-(2011/03/30(Wed) 18:31:19)
2011/03/30(Wed) 18:57:32 編集(投稿者)
2011/03/30(Wed) 18:57:08 編集(投稿者)

SELECT * FROM seles_view
WHERE seles_date between '2011/03/01 00:00:00' and '2011/04/01 00:00:00'
ORDER BY seles_id";

これで出来ました!
ありがとうございました!
解決済み
引用返信 編集キー/
■58311 / inTopicNo.8)  Re[6]: pgAdminV【年月の比較】
□投稿者/ shu (585回)-(2011/03/30(Wed) 20:37:00)
2011/03/30(Wed) 22:03:16 編集(投稿者)

No58297 (こたろう さん) に返信


> すみません、勘違いをしていたので、
> SELECT CURRENT_DATE
> SELECT date_trunc('month',CURRENT_DATE)
> SELECT date_trunc('month',CURRENT_DATE) + interval '1 month'
> としてやり直しました。
> そうすると、
> {2011/03/30 0:00:00}
> {2011/03/01 0:00:00}
> {2011/04/01 0:00:00}
> となりました。
> {2011/03/00 0:00:00} のようにはならないのですか?

解決したようですが、一応
date_truncは指定したintervalで日付を切り捨てるので3月の最初の日が返ってきます。


あっ!そして条件がbetweenなっている。ということは2011/04/01を指定しまうと4/1まで含まれてしまうので3/31にするようにしないと駄目です。
引用返信 編集キー/
■58327 / inTopicNo.9)  Re[7]: pgAdminV【年月の比較】
□投稿者/ こたろう (10回)-(2011/03/31(Thu) 09:07:55)
No58311 (shu さん) に返信
> 2011/03/30(Wed) 22:03:16 編集(投稿者)
>
> ■No58297 (こたろう さん) に返信
> 解決したようですが、一応
> date_truncは指定したintervalで日付を切り捨てるので3月の最初の日が返ってきます。
ありがとうございます!

> あっ!そして条件がbetweenなっている。ということは2011/04/01を指定しまうと4/1まで含まれてしまうので3/31にするようにしないと駄目です。
これ、今日気づきました。
betweenを使うとどう指定していいかわからなかったので
下記のようにして、解決しました。

AND seles_date >= '2011/03/01 00:00:00'
AND seles_date < '2011/04/01 00:00:00'


ありがとうございました!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -