Toon posts:

[ASP] DateDiff met waardes in yyyymmddhhmmss-formaat

Pagina: 1
Acties:

Verwijderd

Topicstarter
Weet iemand of er een manier is waarmee datetimes opgeslagen als yyyymmddhhmmss kunnen worden vergeleken middels DateDiff?

Mijn voornaamste zorg is dat functies als CDate roet in het eten gooien wanneer de applicatie op systemen met verschillende regional/locale-settings draait - wat is de beste manier om dit risico te omzeilen?

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 13:14

TeeDee

CQB 241

Zelf je date/time opbouwen?

Jaar = year(now)
etc. etc.
en die aan elkaar plakken?

Of kijk eens naar Dateformat, Session.LCID etc. etc.

[ Voor 25% gewijzigd door TeeDee op 09-09-2003 13:04 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

het makkelijkste is inderdaad om gewoon zelf je datum op te bouwen
year(now)&month(now)&day(now) enzovoort

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 09 September 2003 @ 13:06:
het makkelijkste is inderdaad om gewoon zelf je datum op te bouwen
year(now)&month(now)&day(now) enzovoort
Waarom dan geen Session.LCID definieren?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Ja dat kan ook wel, alleen ik vind het zelf gewoon handiger om geen gebruik te maken van Session.LCID

Verwijderd

Topicstarter
Thanks mensen; excuses als ik een beetje als een josti overkom, maar hoe bouw ik zo'n geldige datestring?

Ik maak die yyyymmddhhmmss strings nu inderdaad door year(now) & month(now) etc te doen (eventueel met een nulletje ertussen wanneer er getallen onder de 10 uitkomen), maar hoe krijg ik van yyyymmddhhmmss weer een geldige datestring die door DateDiff alszodanig wordt herkend?

(note: het knippen en plakken en naar getalletjes converteren is dus niet zozeer het probleem - met Mid(string,4,2) e.d. pik ik zo de maand er weer uit - het gaat mij dus juist om: wat vindt DateDiff een 'valid date expression'? En hoe voorkom ik dat ik bij het bouwen van die date-expression niet bijvoorbeeld dag en maand verkeerd om zet wanneer de regional/locale-settings anders zijn... zal ik dan echt vastzitten aan het gebruik van Session.LCID of is er een waterdichte manier zonder LCID te hoeven gebruiken?)

Verwijderd

Ik bouw altijd een engelse datum string (mm/dd/yyyy hh:mm) en gooi deze dan in datediff...
Werkt prima... Of ik doe zoveel mogelijk datum bewerken gewoon in SQL.

Voor de zekerheid nog ff een handige link : http://www.asp-help.com/getstarted/ms/vbscript/65.asp

Wil je zelf geen string opbouwen, dan kun je het beste session.LCID gebruiken. Dit werkt ook prima.
http://msdn.microsoft.com...tm/ref_vbom_sesoplcid.asp

[ Voor 28% gewijzigd door Verwijderd op 09-09-2003 13:24 ]


Verwijderd

Gebruik DateSerial( j, m, d ) + u/24 + mi/(24*60)

[ Voor 3% gewijzigd door Verwijderd op 09-10-2003 15:52 . Reden: s4 vervangen door 24 ]


Verwijderd

Topicstarter
Ouch; Session.LCID = 0409 resulteert bij mij al in een "The specified LCID is not available." - terwijl m'n systeem wel op Engels staat.

De test-code in kwestie:

Session.LCID = 0409
Dim stampString
Dim dateString
stampString = "20030909102342"
dateString = FormatDateTime(stampString)

Ik heb al zo'n donkerbruin vermoeden dat ook wanneer ik die juiste LCID wel heb geinstalleerd, de laatste regel niet bepaald zal zijn zoals jullie bedoelen?

Tevens: als 'ie bij mij al roept dat die LCID niet beschikbaar is (standaard Windows 2000 Pro installatie, helemaal up to date, language & regional settings op default), is het risico dan niet ook erg groot dat dit probleem ook zal optreden wanneer het programma op servers gedraaid gaat worden waarbij ik geen controle heb over regional-settings e.d.?

Mijn dank voor jullie meedenken is hoe dan ook groot!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

0409 is ook geen geldige LCID; 't is een LANGID.

Zie http://msdn.microsoft.com...ript56/html/vsmscLCID.asp

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Da's stupide: op http://msdn.microsoft.com...tm/ref_vbom_sesoplcid.asp staat:

Syntax
Session.LCID(= LocaleID)

Parameters
LocaleID
An integer that represents the geographical locale. You can find locale integers on ... http://www.microsoft.com/...e/win2k/setup/langid.mspx !!!

Lekker handig :-) Had ik dus niet begrepen als jij me er niet op had gewezen... thanks!

Edit - toevoeging: Heb 'm nu op 1033, en hij flipt zoals ik vreesde inderdaad van een FormatDateTime met een yyyymmddhhmmss-string erin...

[ Voor 15% gewijzigd door Verwijderd op 09-09-2003 13:54 ]


Verwijderd

die datum in het yyyymmddhhmmss formaat komt die uit een MS-SQL database? Want in MS-SQL zit ook een handige convert functie om een datum om te zetten naar een bepaald formaat

Verwijderd

Topicstarter
Nope, zijn zelfgebouwde yyyymmddhhmmss-strings - ze staan opgeslagen in een Access-database als Decimal, zodat ik daar zo rap mogelijk in kan sorteren e.d.

Ik heb dus een aantal functies gemaakt voor conversie van datum/tijd naar yyyymmddhhmmss, maar blijkbaar werkt de terugweg wat complexer...

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 09 September 2003 @ 14:07:
Nope, zijn zelfgebouwde yyyymmddhhmmss-strings - ze staan opgeslagen in een Access-database als Decimal, zodat ik daar zo rap mogelijk in kan sorteren e.d.

Ik heb dus een aantal functies gemaakt voor conversie van datum/tijd naar yyyymmddhhmmss, maar blijkbaar werkt de terugweg wat complexer...
Kan je niet snel op een date/time formaat dan sorteren? :?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
TheChkU: wat doe je precies met mi/(s4*60)? Ik denk namelijk dat deze dateserial-oplossing nog wel eens de beste optie zou zijn in mijn geval... moet er nog iets tussen de s en de 4 staan wellicht? Thanks!

Verwijderd

Topicstarter
Kan je niet snel op een date/time formaat dan sorteren?
Ik dacht begrepen te hebben dat dat een date/time-veld meer bits had; verder was ik juist van date/time-velden afgestapt toen bleek dat daar verschil in was tussen SQL Server en MS Access, en de interpretatie van een date/time-veld ook beinvloed kon worden door regional/locale-settings op de verschillende servers... of heb ik me hier grondig in vergist?

Verwijderd

Topicstarter
Voor diegenen die ooit op deze thread stuitten in een soortgelijke zoekpoging als de mijne:

De oplossing die voor mij uiteindelijk blijkt te werken:

datumwaarde = DateSerial(year,month,hour) + TimeSerial(hour,minute,second)

Heel hartelijk dank aan iedereen die heeft meegedacht!

Verwijderd

Goh zo leer ik ook nog eens wat bij! Bedankt!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
lees [rml]RobIII in "[ ASP & SQL] Opslaan en lezen van datum g"[/rml] eens door. Daar staat een functie in die van een datum een yyyymmdd hh:mm:ss maakt (copy & paste). Je kunt deze heel makkelijk aanpassen om yyyymmddhhmmss terug te geven.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1