JavaScript is loosely typed. Database files are not. If you put text into a Boolean database column or a Boolean value into a date/time column, then you will get an error.
For the most part this is not a problem, except for date/time. It does not correspond to the JavaScript Date Object. So, we have to tear Date apart and rebuild it from scratch. If we don't, then we get a type mismatch error.
Take a look at the snippet below. (It's not part of our lesson, but I want you to look at it anyway.) Please notice DateTime.
objConn.Open(strConnect) sql = "INSERT INTO FoloVisit (SessionID,VisitTime) " sql+= "Values ('" + Session.SessionID + "',#" + DateTime + "#);" objConn.Execute(sql)
DateTime has to be in a very particular format: #mm/dd/yyyy hh:mm:ss [a|p]m# As you well know new Date() doesn't even come close to this format. We will fix that in the script below.
Get Started:
Below is the script for Lesson 20.
<%@LANGUAGE="JavaScript"%> <SCRIPT LANGUAGE="VBScript" RUNAT="Server"> Dim VBTime,VBDate,VBDateTime VBTime = Time & " " VBDate = Date & " " VBDateTime = Date & " " & Time </SCRIPT> <% function whatTimeIsIt() { var m=new Date() var minute=m.getMinutes() var second=m.getSeconds() var ampm=false if (minute >=0 && minute < 10) { minute=("0" + minute) } if (second >= 0 && second < 10 ) { second=("0" + second) } var hours=m.getHours() if (hours > 12) { ampm=true hours=hours-12 } if (hours==12) { ampm=true } if (hours == 0) { hours=hours+12 ampm=false } if (ampm) { ampm=" PM" } else { ampm=" AM" } var myTime=hours + ":" + minute + ":" + second + ampm return myTime; } var DateTime = new Date(); var Month = (DateTime.getMonth() + 1) + "/"; var Day = DateTime.getDate() + "/"; var Year = DateTime.getFullYear(); var JustTheDate = Month + Day + Year; var JustTheTime = whatTimeIsIt(); var DateTime = Month + Day + Year + " " + whatTimeIsIt(); Response.Write("<HTML>r") Response.Write("<STRONG>JavaScript Time</STRONG><BR>r") Response.Write("The date in proper database format is: " + JustTheDate + "<BR>r") Response.Write("The time in proper database format is: " + JustTheTime + "<BR>r") Response.Write("The date & time together are: " + DateTime + "<BR>r") Response.Write("<HR>r") Response.Write("<STRONG>VBScript Time</STRONG><BR>r") Response.Write("The date in proper database format is: " + VBDate + "<BR>r") Response.Write("The time in proper database format is: " + VBTime + "<BR>r") Response.Write("The date & time together are: " + VBDateTime + "<BR>r") Response.Write("</HTML>") %>
Click Here to run the script in a new window.
Living on VBScript Time:
The other way to solve the problem is to use the VBScript date and time Objects. What can I say? If you can't beat 'em, steal from 'em!
Time For a Tangent:
If all you want to do is store new Date() exactly as-is in your database then do so in a text or memo column. The disadvantage of using this tactic is that SQL cannot sort items correctly by date and time. Instead, they'll be sorted by alphabetical order.
Final Thoughts:
That's the end of the lesson plan. I have received messages from all over the world. Thank you for your kind words. If you have questions or comments you can click onto the link for the home page and then there's a link to contact me.