This is a sticky issue with no easy answer.
Using a string format, and coverting to the proper format is one way to do it, and many people do it that way.
I use locale ID's. There are some drawbacks with this as well.
At the top of my code, I do the following....
xLCID=GetLocale '## Do Not Edit
Session.LCID=xLCID
Then, when doing anything that WRITES data to the database, I do...
Session.LCID=1033
'f3 is a DATE field
SQLx="INSERT INTO table (f1,f2,f3) VALUES (" & v1 & "," & v2 & ",#" & Date() & "#)"
Session.LCID=xLCID
'dbexecute is my routine that handles all the db calls
dbexecuteX(SQLx)
Basically this code reads the currently installed localeID (language and format identifier) that the server is set to, and stores it so we know how the user prefers to SEE the data.
Then, prior to saving any DATE data, we set the locale ID for the session to US-English Format... so that ALL dates are STORED in the same format. It's important that this is done when creating the SQL statement itself.
Once the SQL is formed, then we switch the locale ID back to how the user prefers it.
Finally, we execute the SQL to update the data.
This has worked well for me. There are SO MANY issues when dealing with dates.... you must be very careful if you plan to handle internationally aware applications.
Tim