Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Użyj parametru procedury składowanej dla parametru jednostki DATE_SUB

To, co próbujesz zrobić, nie jest możliwe w procedurze składowanej, z przygotowaną instrukcją lub bez niej.

Możesz zrobić coś podobnego w ten sposób:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL JOIN w celu zastąpienia identyfikatorów wartościami z innej tabeli

  2. Doctrine2 w Symfony2:Jak mogę zobaczyć, które wywołanie obiektu prowadzi do zapytania?

  3. Użyj relacyjnych baz danych MySQL na Ubuntu 9.10 (Karmic)

  4. Nieznana kolumna w 'liście pól', gdy w podzapytaniu znajduje się symbol zastępczy przygotowanej instrukcji

  5. Jak sprawdzić duże litery w MySQL?