質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

1回答

1580閲覧

DBで計算した時刻を「XX時間」の形でExcelに表示させたい

Chitose318

総合スコア5

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2020/02/06 05:35

編集2020/02/06 06:14

前提・実現したいこと

PostgreSQLから取得したデータをマクロで加工して表示するExcelを作っています。

稼働日マスタに格納されている稼働開始時刻、稼働終了時刻から稼働時間を計算し、最終的に「9(時間)」「7.5(時間)」という表示をさせたいです。
Excel上で時間のみのシリアル値に出来れば、そこからは実現できそうなのですが、そこまでたどり着くことができません。
稼働開始時刻、稼働終了時刻はtimestamp型です。

SQL側、Excel側どちらからのアプローチでもよいのでご教授いただきたいです。
宜しくお願い致します。

元のソースコード

SQL

1 SELECT kadou_ymd -- 稼働年月日 2 , kadou_end_time - kadou_start_time AS kadou_time -- 稼働時間(稼働終了時刻-稼働開始時刻) 3 FROM mt_kadoubi

引き算の結果kadou_timeがinterval型で取り出される。
これをExcelに吐き出すと「09:00:00」という文字列で返ってくる。
シリアル値ではないためこのままでは使えない。

試したこと、発生している問題

time型にキャストして取り出してみたが、Excelに吐き出すと今日の日付が追加されてしまった。(例:2020/2/6 09:00:00)
実際はシリアル値なのでこの状態だとExcelのTIMEVALUE関数はエラーとなり使えない。

postgreSQL

1 SELECT kadou_ymd -- 稼働年月日 2 , cast((kadou_end_time - kadou_start_time) as time) AS kadou_time -- 稼働時間(稼働終了時刻-稼働開始時刻) 3 FROM mt_kadoubi

利用環境

OS:windows10
Excel:office2019
PostgreSQL:ver10.11

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/02/06 05:40

>timestanp 「timestamp」かと思います。 他にもちょこちょこ怪しい表記がありますので見直していただければと
Chitose318

2020/02/06 06:03

誤字のご指摘ありがとうございます。 他にどのような部分が良くないでしょうか。 合わせて修正させていただきたいのですが、見直してもピンとこず、申し訳ないのですが教えていただければと思います。
m.ts10806

2020/02/06 06:07

スペルミスはたぶんそこくらいですね。すごく細かいことを言うと大文字小文字もなるべく正確にしてもらいたいところではありますが… コードのところは「言語」なので「SQL」だけで良いとは思います。
Chitose318

2020/02/06 06:13

こういった場所での初めての質問でそこまで気にすることが出来ていませんでした。 アドバイスありがとうございます。今後そのように気を付けたいと思います。
guest

回答1

0

ベストアンサー

たぶん、

引用テキスト引き算の結果kadou_timeがinterval型で取り出される。
これをExcelに吐き出すと「09:00:00」という文字列で返ってくる。
シリアル値ではないためこのままでは使えない。

ここまで取れているなら、それをTimeValue関数でシリアル値に変換してあげればいいだけのような気がします。
参考

投稿2020/02/06 05:58

ttyp03

総合スコア17000

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chitose318

2020/02/06 06:17

凡ミスでした、その通りです。 お恥ずかしながらSQLの変更とVBAの変更を何度も行っていて初歩的なミスをしてしまったようです。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問