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

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

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

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Amazon Redshift

Amazon Redshiftは、Amazon社が提供する 高速かつ完全マネージド型でペタバイト規模の クラウドデータウェアハウスサービスです。

Q&A

1回答

350閲覧

SQL 00:00:00を24:00:00へ変更したい

asdixocjvuh

総合スコア0

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Amazon Redshift

Amazon Redshiftは、Amazon社が提供する 高速かつ完全マネージド型でペタバイト規模の クラウドデータウェアハウスサービスです。

0グッド

0クリップ

投稿2023/10/11 09:35

編集2023/10/12 01:44

実現したいこと

Redshift上での話です。
あるカラムに時刻がtime without time zone型で格納されています。
24時のデータは00時のように表現されていて、これを24:00~に変換したいです。

前提

修正依頼ありがとうございました。
下記のコードを見て頂きたいです。

発生している問題・エラーメッセージ

Case When Extract(hour From depart_datetime) = 0 Then date_add('hour', 24, depart_datetime) Else depart_datetime End As depart_datetime, 上記のコードを試しています。When Extract(hour From depart_datetime) = 0の抽出はコードの通りに作動することを確認済みです。 00時に24を足す処理ができません。エラーなどは発生していませんが、00から24への変更が実施されていないです。こちら何が問題なのでしょうか?

該当のソースコード

ソースコード

試したこと

24を'24'に変更してみても結果は変わりませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

ikedas

2023/10/11 10:32

「上手くいきませんでした。」「Redshift上ではto_timeは扱っていない?とか」では、実際に何が起きたのか伝わりませんので、 * 実際に行った操作 * その結果出力された内容 を、省略や要約をせず、具体的に記してください。 「具体的に 」というのは、「それを見た他のひとがあなたがやったのと全く同じことをして結果を再現できるくらいに」という意味です。 こののコメント欄に書くのではありません。質問文を編集して書いてください。
shiketa

2023/10/12 00:08 編集

日時形式の文字列 https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_FORMAT_strings.html を読むと、 > HH24 時 (24 時間制、00~23) と記述されている。「時」は0時から23時まで。24時はない。 ごく普通にかんがえて、2023-10-12 24:00:00 とは言わない。2023-10-13 00:00:00 という。 # ラヂオテレビの番組表なら27時とかあるけれど、普段は使わない。 そういうことなのでは? 「一度文字列に変換してから、00を24に変更した」カラムを設けるのがいいのでは。日から一引くのをお忘れなきよう。
sazi

2023/10/12 02:19

24時を表示するなら、少なくとも25時間表記となるような独自の関数を作成する必要があります。
asdixocjvuh

2023/10/12 03:00

00時だけを24時に変換したいんですよね、、 バスの乗車時間を求めたいのですが、例えば23:59:00から00:00:01ですと差分が求められないのです。 そのため00時を24時に変えたいと思っています。
ikedas

2023/10/12 03:09 編集

時間以下の部分だけ比較するからでしょう。 arrival_datetime と depart_datetime の差を求めればいいのでは。 [追記] それに、おっしゃる方法では足掛け3日以上にわたって運行する場合にはやっぱり対応できませんよね。
KOZ6.0

2023/10/12 04:23

今の型ではどうあがいても 00:00:00 ~ 24:00:00 までしか格納できないので DB 設計者に相談して TIMESTAMP 型に変えてもらったほうがいいんじゃないですか? でなければ、計算するところで頑張るしかないです。
ikedas

2023/10/12 04:53

depart_datetimeという名前なので日付と時刻を連結したタイムスタンプなのかと思いましたが、ちがうんでしょうか。 あと現実の運用としても、土日祝日ダイヤや季節ダイヤがあるので乗降車日は特定しないといけないと思いますね。
sazi

2023/10/12 12:07

timestampの比較の時間差を、時刻型ではなく単に時刻のフォーマットに整形したもので表示するだけだと思います。
guest

回答1

0

通常のTime型にすれば100:00でも設定できそうですけど、管理が煩雑になりそうですよね。
月曜日の24:00は火曜日の0:00ということで、日付にまで影響するでしょうし
48時間以上になってきたときに追いかけるのは面倒です

投稿2023/10/13 03:22

yambejp

総合スコア114883

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問