DAYNAME(CONCAT('1970-09-2', SUBSTRING_INDEX(workdays, ',', -1)))
説明:
このMySQLの文字列関数SUBSTRING_INDEX
:
SUBSTRING_INDEX(workdays, ',', -1)
...あなたにリストされた最後の稼働日の数を与えます。
DAYNAME(CONCAT('1970-09-2', dayIndex))
:DAYNAME
とCONCAT
を使用してhereから
そしてこのトリック、(何それがないと、コンマがありますすべてのポジションを見つけて、最後のコンマの後にすべてを返し、例えば、SUBSTRING_INDEX('1,2,3', ',', -1)
リターン3です) ...あなたにその日の名前を与えます。 (DAYNAME
に日付が必要なので、このテクニックでは、日曜日で0で終わる日付、この場合は1970-09-20
を選択し、最後の桁を返されたインデックスで置き換えて、対応する曜日を決定します(例:20 =日曜日、21 =月曜日など)
それらを一緒に入れてください:
SELECT DAYNAME(CONCAT('1970-09-2', SUBSTRING_INDEX(workdays, ',', -1))) AS lastday FROM ...
を...そして、あなたはlastday
変数に返さ平日の対応する名前を取得します。
CSVを取り除き、テーブルを正規化してください。あなたの人生ははるかに簡単になります。 –
最初のバージョンは、毎日1つの列になっていました。私は言っていない、CSVの方法は最高です、私はそれを変更することができます、問題はありません。しかし、私のテーブルを変更すると、私の問題は解決しませんでした。最後の勤務日はどのように決定できますか? – user6411365