SELECT DATEADD(mm, 1, '1/31/2004')\n SELECT DATEADD(yy, 1, '2/29/2004')\nresults:\n 2004-02-29 00:00:00.000\n 2005-02-28 00:00:00.000
or in VBScript:
<script language='vbscript'>\n document.write(DateAdd("m" , 1, "1/31/2004") & "<br>")\n document.write(DateAdd("yyyy", 1, "2/29/2004") & "<br>")\n </script>\nresults:\n 2/29/2004\n 2/28/2005
but my javascript function (as shown below) does not produce the same results:
<script language='javascript'>\n document.write(DateAdd("mm", 1, "1/31/2004") + "<br>");\n document.write(DateAdd("yy", 1, "2/29/2004") + "<br>");\n </script>\nresults:\n Tue Mar 2 00:00:00 CST 2004\n Tue Mar 1 00:00:00 CST 2005
Anyone know of an implementation of a JavaScript DateAdd that would be consistent with the T-SQL and VBScript?
\n<html>
<head>
<title>DateAdd</title>
<script language='javascript'>
function DateAdd(datepart, number, date) {
var d = new Date(date);
switch (datepart) {
// millisecond
case "ms":
return new Date(Date.parse(d) + (number));
// second
case "s":
case "ss":
return new Date(Date.parse(d) + (number*1000));
// minute
case "n":
case "mi":
return new Date(Date.parse(d) + (number*1000*60));
// hour
case "hh":
return new Date(Date.parse(d) + (number*1000*60*60));
// day
case "d":
case "dd":
return new Date(Date.parse(d) + (number*1000*60*60*24));
// week
case "wk":
case "ww":
return new Date(Date.parse(d) + (number*1000*60*60*24*7));
// month
case "m":
case "mm":
return new Date(
d.getFullYear(),
d.getMonth()+number,
d.getDate(),
d.getHours(),
d.getMinutes(),
d.getSeconds());
// quarter
case "q":
case "qq":
return new Date(
d.getFullYear(),
d.getMonth()+number*3,
d.getDate(),
d.getHours(),
d.getMinutes(),
d.getSeconds());
// year
case "yy":
case "yyyy":
return new Date(
d.getFullYear()+number,
d.getMonth(),
d.getDate(),
d.getHours(),
d.getMinutes(),
d.getSeconds());
}
}
</script>
</head>
<body>
<script language='javascript'>
document.write(DateAdd("mm", 1, "1/31/2004") + "<br>");
document.write(DateAdd("yy", 1, "2/29/2004") + "<br>");
</script>
</body>
</html>