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

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

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

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

Q&A

解決済

2回答

6089閲覧

postgresqlのシーケンスで作成時に現在日付+連番で増えるようにしたい

mk222222

総合スコア59

PostgreSQL

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

0グッド

0クリップ

投稿2019/06/29 06:13

表題の通りです。
シーケンス初期設定時に現在日付+連番ってできるのでしょうか

できるならやり方を教えていただけないでしょうか。

CREATE SEQUENCE public.work_no_seq INCREMENT 1 START 1 MINVALUE 1;

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

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

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

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

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

sazi

2019/06/29 09:14

できないという回答は要らないという事ですか?
mk222222

2019/06/29 13:29

そんなこと言ってませんが。
mk222222

2019/06/29 13:30

煽るならコメントしないでください。
mk222222

2019/06/29 13:31

でも回答ありがとうございます。
sazi

2019/06/29 13:51

いえ、煽るつもりはありませんけど、回答したら逆に色々言われる方がおられるもので。
mk222222

2019/06/29 13:58

ごめんなさい。煽られたと思って口調が悪くなってしまいました そんな方もおられるんですね、
guest

回答2

0

一応できない理由で回答します。
INCREMENTでは増分しか指定できないので、日毎の連番というのは無理ですね。

postgresで日付毎の連番を取るなら、ウィンドウ関数のrow_number()を用いる事で可能です。

日付をyyyymmddとし順序を決めるものを順序項目と仮定して、yyyymmdd+連番として、連番を3桁とする場合なら以下のようになります。

SQL

1select 日付*1000 + row_number(順序項目) over(partition by 日付 order by 順序項目)

ただ、上記の結果の項目を保持するのではなく、日付と順序項目は項目を分けておき、必要な時に編集して取得するようにした方が良いかと思います。

投稿2019/06/29 13:59

編集2019/06/29 14:11
sazi

総合スコア25426

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

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

mk222222

2019/06/29 14:04

なるほど。日付は数値ではないから無理なんですね! row_number()使ってみます!ありがとうございました。
sazi

2019/06/29 14:07 編集

数値でないからではありません。yyyymmddという数値の書式で表す事も可能ですから。 カレンダー通りに日付を変更するとか、日が変わったときに連番部分をリセットするような事が、 シーケンスではできません。
mk222222

2019/06/29 14:15

勝手に理解した気になってました。そういうことなんですね! ありがとうございます。
guest

0

自己解決

できないそうです。ありがとうございました。sqlで結合したりとほかの方法を模索します。

投稿2019/06/29 13:32

mk222222

総合スコア59

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問