Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript来选择和转换正确的日期格式_Javascript_Mysql_Date_Stored Procedures - Fatal编程技术网

javascript来选择和转换正确的日期格式

javascript来选择和转换正确的日期格式,javascript,mysql,date,stored-procedures,Javascript,Mysql,Date,Stored Procedures,我已经编写了一个存储过程&要执行这个过程,我需要传入一个数据类型为“DATE”的IN参数 现在,我将简要介绍我的IN参数 假设我想查看“2011年12月”的出席情况,那么我需要将“IN”参数传递为“上一个月的最后一个日期”,即“2011-11-30”。然后我的程序执行,并给我整个12月的出勤细节 希望你仍然和我在一起 现在我的问题来了 我提供了用户界面 因此,用户将在此处选择“年”和“月”,假设他想查看“2011年12月”报告,那么他将选择“2011”作为年,选择“12月”作为月作为输入 现在我

我已经编写了一个存储过程&要执行这个过程,我需要传入一个数据类型为“DATE”的IN参数

现在,我将简要介绍我的IN参数

假设我想查看“2011年12月”的出席情况,那么我需要将“IN”参数传递为“上一个月的最后一个日期”,即“2011-11-30”。然后我的程序执行,并给我整个12月的出勤细节

希望你仍然和我在一起

现在我的问题来了

我提供了用户界面

因此,用户将在此处选择“年”和“月”,假设他想查看“2011年12月”报告,那么他将选择“2011”作为年,选择“12月”作为月作为输入

现在我想写一个JavaScript代码,它将把这些“年”和“月”作为输入,并将今年和月份转换为“上个月的最后一个日期”格式,例如“2011-11-30”表示“2011年12月报告”

那么,我应该如何编写一个脚本来将正确的输入传递给我的过程呢

DELIMITER $$

USE `Sample`$$

DROP PROCEDURE IF EXISTS `Test`$$

CREATE DEFINER=`Sample`@`%` PROCEDURE `Test`(IN month_last_date DATE)
BEGIN
SELECT 
users.id AS Id,
users.first_name AS Employee,cl_territories.name AS Territory,
CASE MAX(CASE WHEN DATE_FORMAT(main.cdate,'%d')='01' THEN main.task
              WHEN DATE_FORMAT(DATE_ADD(month_last_date, INTERVAL 1 DAY),'%W')='SUNDAY' THEN 0
              WHEN main.cdate IS NULL THEN -1
         ELSE -2 END)
     WHEN -1 THEN 'NA'
     WHEN  0 THEN 'S'
     WHEN  1 THEN 'Y'
     WHEN  2 THEN 'C'
     WHEN  3 THEN 'S1'
     WHEN  4 THEN 'P'
     WHEN  5 THEN 'M'
     WHEN  6 THEN 'H'
     WHEN  7 THEN 'L'
END Day1,
CASE MAX(CASE WHEN DATE_FORMAT(main.cdate,'%d')='02' THEN main.task
              WHEN DATE_FORMAT(DATE_ADD(month_last_date, INTERVAL 2 DAY),'%W') ='SUNDAY' THEN 0
              WHEN main.cdate IS NULL THEN -1
         ELSE -2 END)
     WHEN -1 THEN 'NA'
     WHEN  0 THEN 'S'
      WHEN  1 THEN 'Y'
      WHEN  2 THEN 'C'
      WHEN  3 THEN 'S1'
      WHEN  4 THEN 'P'
      WHEN  5 THEN 'M'
      WHEN  6 THEN 'H'
      WHEN  7 THEN 'L'
END Day2,
.
.
. # upt o 31 days
CASE MAX(CASE WHEN DATE_FORMAT(main.cdate,'%d')='31' THEN main.task
              WHEN DATE_FORMAT(DATE_ADD(month_last_date, INTERVAL 31 DAY),'%W')='SUNDAY' THEN 0
              WHEN main.cdate IS NULL THEN -1
         ELSE -2 END)
     WHEN -1 THEN 'NA'
     WHEN  0 THEN 'S'
     WHEN  1 THEN 'Y'
     WHEN  2 THEN 'C'
     WHEN  3 THEN 'S1'
     WHEN  4 THEN 'P'
     WHEN  5 THEN 'M'
     WHEN  6 THEN 'H'
     WHEN  7 THEN 'L'
END Day31
FROM
users  LEFT JOIN users_cstm
ON users.id=users_cstm.id_c
LEFT JOIN cl_territories
ON users_cstm.cl_territories_id1_c=cl_territories.id
LEFT JOIN
(
SELECT DATE_FORMAT(cl_doctor_call.date_entered,'%Y-%m-%d')AS cdate,
  cl_doctor_call.created_by  AS emp,
  1     task     
  FROM 
  cl_doctor_call  
  WHERE 
  DATE_FORMAT(cl_doctor_call.date_entered,'%Y-%m-%d')>month_last_date AND
  DATE_FORMAT(cl_doctor_call.date_entered,'%Y-%m-%d')<=DATE_ADD(month_last_date, INTERVAL 30 DAY)

  UNION ALL
  SELECT 
  DATE_FORMAT(cl_chemist_call.date_entered,'%Y-%m-%d') AS  cdate,
  cl_chemist_call.created_by AS emp,
  2    task     
  FROM 
  cl_chemist_call
  WHERE 
  DATE_FORMAT(cl_chemist_call.date_entered,'%Y-%m-%d')>month_last_date AND
  DATE_FORMAT(cl_chemist_call.date_entered,'%Y-%m-%d')<=DATE_ADD(month_last_date, INTERVAL 30 DAY)

  UNION ALL
  SELECT 
  DATE_FORMAT(cl_stockist_call_cstm.calldate_c,'%Y-%m-%d') AS cdate,
  cl_stockist_call.created_by AS emp,
  3         task
  FROM 
  cl_stockist_call LEFT JOIN cl_stockist_call_cstm
  ON cl_stockist_call.id=cl_stockist_call_cstm.id_c
  WHERE 
  DATE_FORMAT(cl_stockist_call_cstm.calldate_c,'%Y-%m-%d')> month_last_date AND
  DATE_FORMAT(cl_stockist_call_cstm.calldate_c,'%Y-%m-%d')<=DATE_ADD(month_last_date, INTERVAL 30 DAY)

  UNION ALL
  SELECT DATE_FORMAT(cl_product_pramotional_call.date_entered,'%Y-%m-%d') AS cdate,
  cl_product_pramotional_call.created_by AS emp,
  4       task
  FROM cl_product_pramotional_call
  WHERE  
  DATE_FORMAT(cl_product_pramotional_call.date_entered,'%Y-%m-%d')>month_last_date AND
  DATE_FORMAT(cl_product_pramotional_call.date_entered,'%Y-%m-%d')<=DATE_ADD(month_last_date, INTERVAL 30 DAY)

  UNION ALL

  SELECT DATE_FORMAT(meetings.date_start,'%Y-%m-%d') AS cdate,
  meetings.created_by AS emp,
  5        task
  FROM meetings
  WHERE  
  DATE_FORMAT(meetings.date_start,'%Y-%m-%d')> month_last_date AND
  DATE_FORMAT(meetings.date_start,'%Y-%m-%d') <= DATE_ADD(month_last_date, INTERVAL 30 DAY)

  UNION ALL
SELECT DATE_FORMAT(cl_holidays_structures.holiday_date,'%Y-%m-%d') AS cdate,
users.id AS emp,
6    task
FROM users LEFT JOIN users_cstm
ON users.id=users_cstm.id_c
LEFT JOIN cl_states
ON users_cstm.cl_states_id1_c=cl_states.id
LEFT JOIN cl_holidays_structures
ON cl_holidays_structures.cl_states_id_c=users_cstm.cl_states_id1_c
WHERE  
DATE_FORMAT(cl_holidays_structures.holiday_date,'%Y-%m-%d')> month_last_date AND
DATE_FORMAT(cl_holidays_structures.holiday_date,'%Y-%m-%d') <= DATE_ADD(month_last_date, INTERVAL 30 DAY)
UNION ALL
SELECT cl_leave_management_cstm.from_date_c+ INTERVAL td.days DAY cdate, 
users.id AS emp,
7    task
FROM
  cl_leave_management LEFT JOIN cl_leave_management_cstm
  ON cl_leave_management.id=cl_leave_management_cstm.id_c
LEFT JOIN users 
  ON cl_leave_management.created_by = users.id
JOIN temp_days td
  ON DATEDIFF(cl_leave_management_cstm.to_date_c, cl_leave_management_cstm.from_date_c) >= td.days
WHERE DATE_FORMAT(cl_leave_management_cstm.from_date_c,'%Y-%m-%d')> month_last_date AND
 DATE_FORMAT(cl_leave_management_cstm.from_date_c,'%Y-%m-%d')<=DATE_ADD(month_last_date, INTERVAL 30 DAY) AND
 cl_leave_management_cstm.status_c='Approved'

 )AS main 
 ON main.emp = users.id 
 WHERE DATE_FORMAT(users.date_entered,'%Y-%m-%d')<= month_last_date
 GROUP BY users.id ;
 END$$

DELIMITER ;
任何建议都会有帮助

这是我的存储过程

DELIMITER $$

USE `Sample`$$

DROP PROCEDURE IF EXISTS `Test`$$

CREATE DEFINER=`Sample`@`%` PROCEDURE `Test`(IN month_last_date DATE)
BEGIN
SELECT 
users.id AS Id,
users.first_name AS Employee,cl_territories.name AS Territory,
CASE MAX(CASE WHEN DATE_FORMAT(main.cdate,'%d')='01' THEN main.task
              WHEN DATE_FORMAT(DATE_ADD(month_last_date, INTERVAL 1 DAY),'%W')='SUNDAY' THEN 0
              WHEN main.cdate IS NULL THEN -1
         ELSE -2 END)
     WHEN -1 THEN 'NA'
     WHEN  0 THEN 'S'
     WHEN  1 THEN 'Y'
     WHEN  2 THEN 'C'
     WHEN  3 THEN 'S1'
     WHEN  4 THEN 'P'
     WHEN  5 THEN 'M'
     WHEN  6 THEN 'H'
     WHEN  7 THEN 'L'
END Day1,
CASE MAX(CASE WHEN DATE_FORMAT(main.cdate,'%d')='02' THEN main.task
              WHEN DATE_FORMAT(DATE_ADD(month_last_date, INTERVAL 2 DAY),'%W') ='SUNDAY' THEN 0
              WHEN main.cdate IS NULL THEN -1
         ELSE -2 END)
     WHEN -1 THEN 'NA'
     WHEN  0 THEN 'S'
      WHEN  1 THEN 'Y'
      WHEN  2 THEN 'C'
      WHEN  3 THEN 'S1'
      WHEN  4 THEN 'P'
      WHEN  5 THEN 'M'
      WHEN  6 THEN 'H'
      WHEN  7 THEN 'L'
END Day2,
.
.
. # upt o 31 days
CASE MAX(CASE WHEN DATE_FORMAT(main.cdate,'%d')='31' THEN main.task
              WHEN DATE_FORMAT(DATE_ADD(month_last_date, INTERVAL 31 DAY),'%W')='SUNDAY' THEN 0
              WHEN main.cdate IS NULL THEN -1
         ELSE -2 END)
     WHEN -1 THEN 'NA'
     WHEN  0 THEN 'S'
     WHEN  1 THEN 'Y'
     WHEN  2 THEN 'C'
     WHEN  3 THEN 'S1'
     WHEN  4 THEN 'P'
     WHEN  5 THEN 'M'
     WHEN  6 THEN 'H'
     WHEN  7 THEN 'L'
END Day31
FROM
users  LEFT JOIN users_cstm
ON users.id=users_cstm.id_c
LEFT JOIN cl_territories
ON users_cstm.cl_territories_id1_c=cl_territories.id
LEFT JOIN
(
SELECT DATE_FORMAT(cl_doctor_call.date_entered,'%Y-%m-%d')AS cdate,
  cl_doctor_call.created_by  AS emp,
  1     task     
  FROM 
  cl_doctor_call  
  WHERE 
  DATE_FORMAT(cl_doctor_call.date_entered,'%Y-%m-%d')>month_last_date AND
  DATE_FORMAT(cl_doctor_call.date_entered,'%Y-%m-%d')<=DATE_ADD(month_last_date, INTERVAL 30 DAY)

  UNION ALL
  SELECT 
  DATE_FORMAT(cl_chemist_call.date_entered,'%Y-%m-%d') AS  cdate,
  cl_chemist_call.created_by AS emp,
  2    task     
  FROM 
  cl_chemist_call
  WHERE 
  DATE_FORMAT(cl_chemist_call.date_entered,'%Y-%m-%d')>month_last_date AND
  DATE_FORMAT(cl_chemist_call.date_entered,'%Y-%m-%d')<=DATE_ADD(month_last_date, INTERVAL 30 DAY)

  UNION ALL
  SELECT 
  DATE_FORMAT(cl_stockist_call_cstm.calldate_c,'%Y-%m-%d') AS cdate,
  cl_stockist_call.created_by AS emp,
  3         task
  FROM 
  cl_stockist_call LEFT JOIN cl_stockist_call_cstm
  ON cl_stockist_call.id=cl_stockist_call_cstm.id_c
  WHERE 
  DATE_FORMAT(cl_stockist_call_cstm.calldate_c,'%Y-%m-%d')> month_last_date AND
  DATE_FORMAT(cl_stockist_call_cstm.calldate_c,'%Y-%m-%d')<=DATE_ADD(month_last_date, INTERVAL 30 DAY)

  UNION ALL
  SELECT DATE_FORMAT(cl_product_pramotional_call.date_entered,'%Y-%m-%d') AS cdate,
  cl_product_pramotional_call.created_by AS emp,
  4       task
  FROM cl_product_pramotional_call
  WHERE  
  DATE_FORMAT(cl_product_pramotional_call.date_entered,'%Y-%m-%d')>month_last_date AND
  DATE_FORMAT(cl_product_pramotional_call.date_entered,'%Y-%m-%d')<=DATE_ADD(month_last_date, INTERVAL 30 DAY)

  UNION ALL

  SELECT DATE_FORMAT(meetings.date_start,'%Y-%m-%d') AS cdate,
  meetings.created_by AS emp,
  5        task
  FROM meetings
  WHERE  
  DATE_FORMAT(meetings.date_start,'%Y-%m-%d')> month_last_date AND
  DATE_FORMAT(meetings.date_start,'%Y-%m-%d') <= DATE_ADD(month_last_date, INTERVAL 30 DAY)

  UNION ALL
SELECT DATE_FORMAT(cl_holidays_structures.holiday_date,'%Y-%m-%d') AS cdate,
users.id AS emp,
6    task
FROM users LEFT JOIN users_cstm
ON users.id=users_cstm.id_c
LEFT JOIN cl_states
ON users_cstm.cl_states_id1_c=cl_states.id
LEFT JOIN cl_holidays_structures
ON cl_holidays_structures.cl_states_id_c=users_cstm.cl_states_id1_c
WHERE  
DATE_FORMAT(cl_holidays_structures.holiday_date,'%Y-%m-%d')> month_last_date AND
DATE_FORMAT(cl_holidays_structures.holiday_date,'%Y-%m-%d') <= DATE_ADD(month_last_date, INTERVAL 30 DAY)
UNION ALL
SELECT cl_leave_management_cstm.from_date_c+ INTERVAL td.days DAY cdate, 
users.id AS emp,
7    task
FROM
  cl_leave_management LEFT JOIN cl_leave_management_cstm
  ON cl_leave_management.id=cl_leave_management_cstm.id_c
LEFT JOIN users 
  ON cl_leave_management.created_by = users.id
JOIN temp_days td
  ON DATEDIFF(cl_leave_management_cstm.to_date_c, cl_leave_management_cstm.from_date_c) >= td.days
WHERE DATE_FORMAT(cl_leave_management_cstm.from_date_c,'%Y-%m-%d')> month_last_date AND
 DATE_FORMAT(cl_leave_management_cstm.from_date_c,'%Y-%m-%d')<=DATE_ADD(month_last_date, INTERVAL 30 DAY) AND
 cl_leave_management_cstm.status_c='Approved'

 )AS main 
 ON main.emp = users.id 
 WHERE DATE_FORMAT(users.date_entered,'%Y-%m-%d')<= month_last_date
 GROUP BY users.id ;
 END$$

DELIMITER ;
我创造了一把小提琴

HTML

<form method="post" action="#" onsubmit="return false">
    <select id="year">
        <option value="2008">2008</option>
        <option value="2009">2009</option>
       <option value="2010">2010</option>
       <option value="2011">2011</option>
       <option value="2012">2012</option>
    </select>

    <select id="month">
        <option value="1">Jan</option>
        <option value="2">Feb</option>
        <option value="3">Mar</option>
        <option value="4">Apr</option>
        <option value="5">May</option>
        <option value="6">Jun</option>
        <option value="7">Jul</option>
        <option value="8">Aug</option>
        <option value="9">Sep</option>
        <option value="10">Oct</option>
        <option value="11">Nov</option>
        <option value="12">Dec</option>
</select>

<button id="filter" onclick="doFilter()">Filter</button>

这个可以在SP中完成。您能提供您的sql脚本吗?我的第一个想法是:他是如何获得问题中的
输入
对象的?:-)是的,当然,只要检查一下,我已经添加了sp。如果我的问题仍然需要更多解释,请告诉我。
function doFilter()
{
    var theMonth = document.getElementById('month').value;
    var theYear = document.getElementById('year').value;  
    var d = new Date(theYear, (theMonth - 1), 0);
    var theDate=d.getFullYear()+" "+(d.getMonth()+1)+" "+d.getDate();
    alert(theDate);
}