sql >> データベース >  >> RDS >> Mysql

DATE_SUBのユニットパラメータにストアドプロシージャパラメータを使用する

    プリペアドステートメントの有無にかかわらず、ストアドプロシージャでは、実行しようとしていることはできません。

    次のようなことを行うことができます:

    DELIMITER $$
    
    DROP PROCEDURE IF EXISTS test_proc $$
    CREATE PROCEDURE  test_proc(param1 varchar(20))
    BEGIN
    
      CASE UPPER(param1)
        WHEN 'MICROSECOND' THEN select DATE_SUB(now(), INTERVAL 1 MICROSECOND); 
        WHEN 'SECOND' THEN select DATE_SUB(now(), INTERVAL 1 SECOND);
        WHEN 'MINUTE' THEN select DATE_SUB(now(), INTERVAL 1 MINUTE);
        WHEN 'HOUR' THEN select DATE_SUB(now(), INTERVAL 1 HOUR);
        WHEN 'DAY' THEN select DATE_SUB(now(), INTERVAL 1 DAY);
        WHEN 'WEEK' THEN select DATE_SUB(now(), INTERVAL 1 WEEK);
        WHEN 'MONTH' THEN select DATE_SUB(now(), INTERVAL 1 MONTH);
        WHEN 'QUARTER' THEN select DATE_SUB(now(), INTERVAL 1 QUARTER);
        WHEN 'YEAR' THEN select DATE_SUB(now(), INTERVAL 1 YEAR);
        ELSE select 'UNEXPECTED UNIT';
      END CASE;
    
    END $$
    
    DELIMITER ;
    



    1. @@ IDENTITYを使用して、SQLServerで最後に挿入されたID値を返します

    2. MySQLdbモジュールのセットアップの問題

    3. mysqlからStreamBuilderFlutterへのデータの取得

    4. MySQLUNION句