タイムスタンプに日数を加算して、現在の日時と比較し残り時間の少ない順で抽出、一行のSQL構文でできるものなのか?
目的
いつもQiitaで問題可決を図らせて頂いております。
皆様ありがとうございます。
初投稿で初学者です、よろしくお願いいたします。
SQLでDBから取り出す際の構文でご相談させてください。
ルーティン作業を管理する簡単なWeb機能をHPに実装しています
作業をポットイットのようにラベル化して作業を終了したらチエックボックスをクリックして色が変わるものになります。
チエックボックスをクリックした日時をDBにタイムスタンプで保存して
時間経過し、登録したサイクルタイムで今の時間との比較によりラベルの色が
変わるというような仕組みのものを作っております。
例
通常は青、1日前に黄色、当日又はサイクル日数が経過したら赤にラベルのバックグラウンドの色が変わる
MySQL DBname:cycle_ope
id | title | up_date_time | cycle_day | position |
1 | トイレ掃除 | 2022-2-20 10:00:00 | 2 | cleaning |
2 | 流し周り掃除 | 2022-2-21 11:00:00 | 4 | cleaning |
3 | サイト更新 | 2022-2-22 09:30:00 | 2 | work |
4 | 事務所内清掃 | 2022-2-21 09:00:00 | 2 | cleaning |
解決したいこと
この様なDBからカラム名positionの'cleaning'のみを抽出し、タイムスタンプのカラム名:up_date_timeにカラム名:cycle_dayの値を日数として加算して、現在の日時から残り時間の短い順で取り出したいのですがうまくいきません
※画像のタイトルとDBのタイトルの値は同じものを使いますが説明の為タイトル名を省略しています。
現在まで構築できたSQL構文になります。
SELECT * FROM cycle_ope WHERE up_date_time ORDER BY DATE_ADD(up_date_time, INTERVAL cycle_day DAY) IN ( SELECT position = 'cleaning' FROM cycle_ope )
カラム名:cycle_dayにある値をカラム名:up_date_timeに加算するところで止まってしまっています。
現在の日時との残り日数の比較に関する構文はまだたどり着いていません。(ASCの予想)
現在の状況
上記の構文でエラーは出ずにDBからデータを取り出せてはいるのですが
idの順番通りの昇順で出力されてしまいます。
一行のSQL構文でかけるものなのか?
SQL 日時加算 などで検索し方法を探すも
DATE_ADDの加算部分にカラムの値を適用できるのか?
そもそもDATE_ADD関数を利用するべきなのか?
タイムスタンプにサイクルの日数を加算し、その先に、現在の時間と比較して残り時間の少ないものから抽出できるのか?
など根本的にできることなのかがわからず困っております
おわかりになる方がいらっしゃいましたら何卒よろしくお願いいたします。