2017-09-27 5 views
0

私はMySQLを使い慣れていません。MySQLの手続きの中に日付変数があり、そのIN日付変数の週の開始日を探しています。何、 ' - - (7)、week_start_num + IF(WEEKDAY(STARTDATE)> week_start_num、0 INTERVAL WEEKDAY(STARTDATE))SET my_new_date = STARTDATE' 私の手順は、私は、これは間違っている知っているMySQLの手続き日付変数の操作

CREATE PROCEDURE my_proc (IN week_start_num INT, IN my_date DATE) 
BEGIN 
    DECLARE my_new_date DATE; 
    #I know what I'm trying here is wrong 
    SET my_new_date=startdate - (INTERVAL WEEKDAY(startdate ) - week_start_num + IF(WEEKDAY(startdate ) > week_start_num, 0, 7)) 

    #rest of my codes goes here 

END 

、以下のようになりますそれを達成する正しい方法はありますか?

答えて

1

これを試してみてください:

SET my_new_date = startdate 
        - INTERVAL 
        ( 
        WEEKDAY(startdate) 
        - week_start_num 
        + IF(WEEKDAY(startdate) > week_start_num, 0, 7) 
       ) 
        DAY;