NEXT_DAY("01-SEP-95","FRIDAY")
は、次の金曜日の日付を返しますが、MySQLではこの関数は表示されません。代替手段は何ですか?OracleのNEXT_DAY関数に代わるMySQLの選択肢は何ですか?
0
A
答えて
0
MySQLでは、ユーザー定義関数
DELIMITER //
CREATE FUNCTION next_day(start_date DATETIME, weekday CHAR(20))
RETURNS DATETIME
BEGIN
DECLARE start DATETIME;
DECLARE i INT;
// Select the next date
SET start = ADDDATE(start_date, 1);
SET i = 1;
days: LOOP
-- Compare the day names
IF SUBSTR(DAYNAME(start), 1, 3) = SUBSTR(weekday, 1, 3) THEN
LEAVE days;
END IF;
// Select the next date
SET start = ADDDATE(start, 1);
SET i = i + 1;
-- Not valid weekday specified
IF i > 7 THEN
SET start = NULL;
LEAVE days;
END IF;
END LOOP days;
RETURN start;
END;
//
DELIMITER ;
を作成し、それを呼び出すことができます
ソースSELECT NEXT_DAY("1995-09-01","FRIDAY")
:
+0
これは、inbuilt関数が結果を得るためにあることを意味しますか? –
+0
@Madhivanan - 私はMySQLの人ではありませんが、単にADDDATE(開始、7)をしないと、昼の名前が同じ場合、我々は良いです。ループは少し上にあるようです。確かに、それは私が使ったことではないので、私はMySQLのトリックを逃している可能性があります。 – BriteSponge
0
が異なる問題への答えです今週の金曜日の日付: -
SELECT STR_TO_DATE(CONCAT('2017',(SELECT DATE_FORMAT(CURDATE(),'%U')),' Friday'),'%Y %U %W') x;
+------------+
| x |
+------------+
| 2017-05-12 |
+------------+
上記は堅牢性については検証されていませんが、単にそのままの状態で提供されています。
0
のMySQL 5.6スキーマのセットアップ:
CREATE TABLE your_table (value DATE);
INSERT INTO your_table (value)
SELECT DATE '2017-05-08' FROM DUAL UNION ALL
SELECT DATE '2017-05-09' FROM DUAL UNION ALL
SELECT DATE '2017-05-10' FROM DUAL UNION ALL
SELECT DATE '2017-05-11' FROM DUAL UNION ALL
SELECT DATE '2017-05-12' FROM DUAL UNION ALL
SELECT DATE '2017-05-13' FROM DUAL UNION ALL
SELECT DATE '2017-05-14' FROM DUAL;
クエリ1:
SELECT value,
ADDDATE(
value,
6 - DAYOFWEEK(value)
+ CASE WHEN DAYOFWEEK(value) < 6 THEN 0 ELSE 7 END
) AS next_friday
FROM your_table
| value | next_friday |
|-----------------------|-----------------------|
| May, 08 2017 00:00:00 | May, 12 2017 00:00:00 |
| May, 09 2017 00:00:00 | May, 12 2017 00:00:00 |
| May, 10 2017 00:00:00 | May, 12 2017 00:00:00 |
| May, 11 2017 00:00:00 | May, 12 2017 00:00:00 |
| May, 12 2017 00:00:00 | May, 19 2017 00:00:00 |
| May, 13 2017 00:00:00 | May, 19 2017 00:00:00 |
| May, 14 2017 00:00:00 | May, 19 2017 00:00:00 |
関連する問題
- 1. SMSゲートウェイのKannelに代わるオープンソースの良い選択肢は何ですか?
- 2. ジャンゴ - models.CharField-選択肢 - オプションボタンの代わりに、選択ボックス
- 3. タイミングの選択肢は何ですか?
- 4. タイムマネージメントソリューションの選択肢は何ですか?
- 5. ラジオボタンの選択肢は何ですか?
- 6. OracleのSELECT(INTERSECTの選択肢は)
- 7. Java 1.3用のデータベースとして、テキストファイルに代わる良い選択肢は何ですか?
- 8. 複数の選択肢の代わりにチェックボックスのリストを表示
- 9. PHPのSOAP拡張に代わる良い選択肢がありますか?
- 10. WindowsでのiOSアプリケーション開発の選択肢は何ですか?
- 11. ios safariでのファイルアップロードの選択肢は何ですか?
- 12. プロセス間通信 - 現代の選択肢?
- 13. jsラジオボタンが1つの選択肢の代わりに複数の選択肢を持つようになっていますか?
- 14. 選択肢から選択肢を選択し、表のセルに選択肢の情報を表示
- 15. log4netロギングの他の選択肢は何ですか?
- 16. 選択は代わりに
- 17. Djangoでopeninviterの良い選択肢は何ですか
- 18. 可視化ダイアグラムでZestの選択肢は何ですか?
- 19. .NETでの複数継承の良い選択肢は何ですか?
- 20. 代わりに、OOPのグローバル関数は何ですか?
- 21. Chosen.js複数の選択肢
- 22. モデル複数の選択肢
- 23. 複数の選択肢 - DropdownMenus
- 24. MySql:データベースに複数の選択肢のデータを格納
- 25. 複数選択の選択肢に反応する
- 26. RPGLEで標準的な整数型の選択肢は何ですか?
- 27. pythonの別の関数に選択肢を送ります
- 28. すでに選択されている選択肢を他の選択肢から削除する
- 29. gimpの羽根の後ろにある選択肢のアルゴリズムは何ですか?
- 30. 選択MariaDBにおける未解決の複数の選択肢の質問のいずれかの/ MySQLの
私はこのオンラインのいくつかの実装を見ることができますが、私はそれらがすべて少し面倒であるように思えます。カスタム機能のアイデアはうまくいますが、ここにいる誰かがうまくいくと思います。 – Strawberry