Bekijk Volledige Versie : ASP datum en Access DB probleem
Hallo,
Ik ben momenteel bezig met data in en uit te lezen uit een Access database.
Nu kom ik het probleem tegen dat hij de data soms omdraait. Klopt het dat
SQL de datum in US opslaat en ASP kijkt naar de taal van het
bestuiringssysteem?
Maakt het ook wat uit of de Access database NL of US is? Ik heb hem gemaakt
in een NL versie maar heb hem pas ook in een US versie van office geopend.
Zorgt dit voor problemen?
Wat is de beste manier om dit probleem aan te pakken?
Uitlezen in NL en opslaan in US formaat?
On Thu, 27 Nov 2003 18:03:02 +0100, "Thuur" <a.koolen@nospam.hccnet.nl>
wrote:
>Hallo,
>
>Ik ben momenteel bezig met data in en uit te lezen uit een Access database.
>
>Nu kom ik het probleem tegen dat hij de data soms omdraait. Klopt het dat
>SQL de datum in US opslaat en ASP kijkt naar de taal van het
>bestuiringssysteem?
>
>Maakt het ook wat uit of de Access database NL of US is? Ik heb hem gemaakt
>in een NL versie maar heb hem pas ook in een US versie van office geopend.
>Zorgt dit voor problemen?
>
>Wat is de beste manier om dit probleem aan te pakken?
>
>Uitlezen in NL en opslaan in US formaat?
Datum formaten in de database vermijden.
--
Ronald - Web Forum for Mailtraq:
http://lijsten.xs4all.nl/webforum/index.asp?id=1
>
> Datum formaten in de database vermijden.
> --
Hoe doe je dan datum sorteren in een database?
On Thu, 27 Nov 2003 19:20:02 +0100, "Thuur" <a.koolen@nospam.hccnet.nl>
wrote:
>>
>> Datum formaten in de database vermijden.
>
>Hoe doe je dan datum sorteren in een database?
Door een integer te bewaren die gelijk is aan het aantal seconden sinds
1 januari 1970 00:00. Eenvoudig te verkrijgen door (new
Date()).getTime()/1000; Of anders het aantal minuten sinds die datum als
je het jaar 2036 (of was het 2037) probleem wilt vermijden.
--
Ronald - Web Forum for Mailtraq:
http://lijsten.xs4all.nl/webforum/index.asp?id=1
RvB wrote:
>>> Datum formaten in de database vermijden.
>>
>> Hoe doe je dan datum sorteren in een database?
>
> Door een integer te bewaren die gelijk is aan het aantal seconden
> sinds 1 januari 1970 00:00. Eenvoudig te verkrijgen door (new
> Date()).getTime()/1000; Of anders het aantal minuten sinds die datum
> als je het jaar 2036 (of was het 2037) probleem wilt vermijden.
Tenzij je natuurlijk iemands geboortedatum op wilt slaan....
--
Inca
NEE - Geen Jomanda
JA - Wel als ze d'r mond houdt
http://www.poldermodelstickers.nl/
On Thu, 27 Nov 2003 21:22:29 +0100, "Inca"
<shadow*movements@wanadoo.NOSPAM.invalid> wrote:
>RvB wrote:
>>>> Datum formaten in de database vermijden.
>>>
>>> Hoe doe je dan datum sorteren in een database?
>>
>> Door een integer te bewaren die gelijk is aan het aantal seconden
>> sinds 1 januari 1970 00:00. Eenvoudig te verkrijgen door (new
>> Date()).getTime()/1000; Of anders het aantal minuten sinds die datum
>> als je het jaar 2036 (of was het 2037) probleem wilt vermijden.
>
>Tenzij je natuurlijk iemands geboortedatum op wilt slaan....
Dan moet je de constructor van Date() gebruiken of de datum van het Date
object 'setten', ja.
--
Ronald - Web Forum for Mailtraq:
http://lijsten.xs4all.nl/webforum/index.asp?id=1
RvB wrote:
>>> Door een integer te bewaren die gelijk is aan het aantal seconden
>>> sinds 1 januari 1970 00:00. Eenvoudig te verkrijgen door (new
>>> Date()).getTime()/1000; Of anders het aantal minuten sinds die datum
>>> als je het jaar 2036 (of was het 2037) probleem wilt vermijden.
>>
>> Tenzij je natuurlijk iemands geboortedatum op wilt slaan....
>
> Dan moet je de constructor van Date() gebruiken of de datum van het
> Date object 'setten', ja.
En hoe doe je het met de mensen die voor 1 januari 1970 geboren zijn?
--
Inca
JA - Wel een vijfde baan erbij
NEE - Liever niet gebruiken
http://www.poldermodelstickers.nl/
> Door een integer te bewaren die gelijk is aan het aantal seconden sinds
> 1 januari 1970 00:00. Eenvoudig te verkrijgen door (new
> Date()).getTime()/1000; Of anders het aantal minuten sinds die datum als
> je het jaar 2036 (of was het 2037) probleem wilt vermijden.
> --
Gaat er nog iets mis als ik de datum opsla als een integer met als waare
jjjjmmdd ?
Zodra ik hem uitgelezen heb omzetten naar datum en het werkt. En bij opslaan
dus weer de - of / eruit halen en op de juiste manier aan elkaar plakken.
Of vergeet ik iets?
On Thu, 27 Nov 2003 22:22:31 +0100, "Inca"
<shadow*movements@wanadoo.NOSPAM.invalid> wrote:
>RvB wrote:
>>>> Door een integer te bewaren die gelijk is aan het aantal seconden
>>>> sinds 1 januari 1970 00:00. Eenvoudig te verkrijgen door (new
>>>> Date()).getTime()/1000; Of anders het aantal minuten sinds die datum
>>>> als je het jaar 2036 (of was het 2037) probleem wilt vermijden.
>>>
>>> Tenzij je natuurlijk iemands geboortedatum op wilt slaan....
>>
>> Dan moet je de constructor van Date() gebruiken of de datum van het
>> Date object 'setten', ja.
>
>En hoe doe je het met de mensen die voor 1 januari 1970 geboren zijn?
Hetzelfde. Dat levert alleen een negatief getal op. Niet echt spannend
allemaal.
--
Ronald - Web Forum for Mailtraq:
http://lijsten.xs4all.nl/webforum/index.asp?id=1
On Thu, 27 Nov 2003 22:30:08 +0100, "Thuur" <a.koolen@nospam.hccnet.nl>
wrote:
>
>> Door een integer te bewaren die gelijk is aan het aantal seconden sinds
>> 1 januari 1970 00:00. Eenvoudig te verkrijgen door (new
>> Date()).getTime()/1000; Of anders het aantal minuten sinds die datum als
>> je het jaar 2036 (of was het 2037) probleem wilt vermijden.
>
>Gaat er nog iets mis als ik de datum opsla als een integer met als waare
>jjjjmmdd ?
Ik dacht het niet. Alhoewel het voor veel gebruik dan eenvoudiger is om
een string te gebruiken 'jjjjmmdd'.
>Zodra ik hem uitgelezen heb omzetten naar datum en het werkt. En bij opslaan
>dus weer de - of / eruit halen en op de juiste manier aan elkaar plakken.
>
>Of vergeet ik iets?
Ik dacht het niet. Wat je voorkeur heeft, en wat jij denkt dat in jouw
geval het meest efficient is.
--
Ronald - Web Forum for Mailtraq:
http://lijsten.xs4all.nl/webforum/index.asp?id=1
RvB wrote:
>>> Dan moet je de constructor van Date() gebruiken of de datum van het
>>> Date object 'setten', ja.
>>
>> En hoe doe je het met de mensen die voor 1 januari 1970 geboren zijn?
>
> Hetzelfde. Dat levert alleen een negatief getal op. Niet echt spannend
> allemaal.
Maar dat kan windows helemaal niet. En daar het hier gaat om ASP met Access
lijkt de aanname dat er met windows gewerkt wordt niet zo vreemd.
--
Inca
JA - Wel blowen
NEE - Niet in de coffeeshop
http://www.poldermodelstickers.nl/
On Thu, 27 Nov 2003 23:23:50 +0100, "Inca"
<shadow*movements@wanadoo.NOSPAM.invalid> wrote:
>RvB wrote:
>>>> Dan moet je de constructor van Date() gebruiken of de datum van het
>>>> Date object 'setten', ja.
>>>
>>> En hoe doe je het met de mensen die voor 1 januari 1970 geboren zijn?
>>
>> Hetzelfde. Dat levert alleen een negatief getal op. Niet echt spannend
>> allemaal.
>
>Maar dat kan windows helemaal niet. En daar het hier gaat om ASP met Access
>lijkt de aanname dat er met windows gewerkt wordt niet zo vreemd.
Bij mij werkt het probleemloos, dus mogelijk heb jij een ander probleem.
--
Ronald - Web Forum for Mailtraq:
http://lijsten.xs4all.nl/webforum/index.asp?id=1
Daniel Tryba
28/11/03, 01:15
Inca <shadow*movements@wanadoo.nospam.invalid> wrote:
>>>> Dan moet je de constructor van Date() gebruiken of de datum van het
>>>> Date object 'setten', ja.
>>>
>>> En hoe doe je het met de mensen die voor 1 januari 1970 geboren zijn?
>>
>> Hetzelfde. Dat levert alleen een negatief getal op. Niet echt spannend
>> allemaal.
>
> Maar dat kan windows helemaal niet. En daar het hier gaat om ASP met Access
> lijkt de aanname dat er met windows gewerkt wordt niet zo vreemd.
Zeker kan Windows dat, mijn eerste ASP applicaties deze precies
bovenstaande.
http://msdn.microsoft.com/library/en-us/script56/html/js56jsobjdate.asp?frame=true
<q>
The range of dates that can be represented in a Date object is
approximately 285,616 years on either side of January 1, 1970.
</q>
Maar ik ben zelf tot de conclusie gekomen dat het toch handiger is om
gebruik te maken van de database (afhankelijke) date/time velden. Een
zinnige database kan daar namelijk iets handiger mee omgaan dan met een
integer tijd.
--
Daniel Tryba
Wim Poorten
28/11/03, 20:30
Thuur wrote:
> Hallo,
>
>
> Ik ben momenteel bezig met data in en uit te lezen uit een Access
> database.
>
> Nu kom ik het probleem tegen dat hij de data soms omdraait. Klopt het
> dat SQL de datum in US opslaat en ASP kijkt naar de taal van het
> bestuiringssysteem?
>
> Maakt het ook wat uit of de Access database NL of US is? Ik heb hem
> gemaakt in een NL versie maar heb hem pas ook in een US versie van
> office geopend. Zorgt dit voor problemen?
>
> Wat is de beste manier om dit probleem aan te pakken?
>
> Uitlezen in NL en opslaan in US formaat?
SQL gebruikt ALTIJD het US formaat, ook met Access.
Bij ASP moet je zelf consequent de datum in het juiste
formaat invoeren. Dan is er geen probleem.
Gebruik Session.LCID om de juiste locale in te stellen.
Bijvoorbeeld bij invoer van formulier naar databank:
strDate=Request.QueryString("datum")
' datum werd door de gebruiker in NL formaat ingevuld
Session.LCID=2067
rsMijnRecordset.Fields("Datum").Value=CDate(strDate)
Voor uitvoer vanuit databank naar pagina kan je dit gebruiken:
iDate=rsMijnRecordset.Fields("Datum").Value
strDate=Day(iDate)&"-"&Month(iDate)&"-"&Year(iDate)
Response.Write(strDate)
--
Wim Poorten
Mark van Ketel
01/12/03, 14:15
Thuur wrote:
> Hallo,
>
>
> Ik ben momenteel bezig met data in en uit te lezen uit een Access database.
>
> Nu kom ik het probleem tegen dat hij de data soms omdraait. Klopt het dat
> SQL de datum in US opslaat en ASP kijkt naar de taal van het
> bestuiringssysteem?
>
> Maakt het ook wat uit of de Access database NL of US is? Ik heb hem gemaakt
> in een NL versie maar heb hem pas ook in een US versie van office geopend.
> Zorgt dit voor problemen?
>
> Wat is de beste manier om dit probleem aan te pakken?
>
> Uitlezen in NL en opslaan in US formaat?
>
>
>
Ik gebruik in principe deze ISOdate functie voor ik een datum de DB in
slinger:
Function ISODate(dteDate)
If IsDate(dteDate) = True Then
DIM dteDay, dteMonth, dteYear
dteDay = Day(dteDate)
dteMonth = Month(dteDate)
dteYear = Year(dteDate)
ISODate = dteYear & _
"-" & Right(Cstr(dteMonth + 100),2) & _
"-" & Right(Cstr(dteDay + 100),2)
Else
ISODate = Null
End If
End Function
Mark
--
homepage: http://www.purmerend.org/mvketel/
weblog : http://www.masadsign.nl/logout/
nlmuziek: http://nlmuziek.cjb.net
Marco Miltenburg
03/12/03, 09:45
>Ik ben momenteel bezig met data in en uit te lezen uit een Access database.
>
>Nu kom ik het probleem tegen dat hij de data soms omdraait. Klopt het dat
>SQL de datum in US opslaat en ASP kijkt naar de taal van het
>bestuiringssysteem?
....
>Wat is de beste manier om dit probleem aan te pakken?
Gebruik overal en altijd variabelen van het type Date(). Zolang je
daarmee werkt en ADO gebruikt, gaat het met iedere database goed.
De problemen komen vaak pas als je met data in een string gaat werken
want dan is het de vraag hoe de database die string interpreteert.
Mijn ervaring is dat iedere database, ongeacht de settings. feilloos
het formaat YYYY/MM/DD leest. Er is namelijk geen twijfel mogelijk wat
het eerste veld is. Dat is 4 cijfers en dus zeker weten het jaartal.
Iedere database (waar ik tot nu toe mee gewerkt heb) gaat er dan
vanuit dat het tweede veld de maand is en het derde de dag.
Grtz,
Marco