Datum in tekstformaat yyyymmdd - hh:mm omzetten naar datumformaat yyyy/mm/dd

Status
Niet open voor verdere reacties.

mixology

Gebruiker
Lid geworden
12 dec 2010
Berichten
57
reeds geruime tijd ben ik aan het zweten en vloeken op een database met een gekoppelde tabel ( waar ik niks over te zeggen heb kwa structuur ) waar een datum weergegeven wordt als tekst ( yyyymmdd - hh:mm).:mad:
Deze datum moet voor verder gebruik omgezet worden naar het datumformaat yyyy/mm/dd . Ik dacht een oplossing gevonden te hebben in volgende query :
Code:
UPDATE Table1 SET Table1.Dt = DateSerial(Left(Dt,4),Mid(Dt,5,2),Right(Dt,2));
. De eerste datum doet hij goed, maar daarna resulteert deze query in foute data, weliswaar in het goede formaat . bv : 20120919 - 15:23 wordt 23/09/2012 . Ziet iemand wat er fout is of heeft iemand een andere oplossing voor mijn probleempje ? De data manueel aanpassen gaat niet, want het betreft +180000 records. Het bestand in bijlage is een zwaar gestripte versie :cool:
Dank voor alle hulp !

Yuri
 

Bijlagen

  • date2text.zip
    22 KB · Weergaven: 35
??? Ik kan me niet voorstellen dat de omzetting van het eerste record wel klopt en die van de tweede niet, omdat je een deel van de tijdaanduiding gebruikt in je (gewenste) datum-indeling [tenzij het eerste record helemaal geen tijdaanduiding bevat.]
Je pakt in het Right gedeelte namelijk een deel van de tijdaanduiding, namelijk de minuten

Lijkt mij dat het zo moet zijn:
Code:
UPDATE Table1 SET Table1.Dt = DateSerial(Left(Dt,4),Mid(Dt,5,2),Mid(Dt,7,2));

Tijs.
 
Laatst bewerkt:
bedankt voor het antwoord, maar deze doet het ook niet, en als je kijkt naar de bijlage zal je zien dat de eerste echt oK is en de andere niet.

mvg,

Yuri
 
Linksom of rechtsom: Je voorbeeld van waar het misgaat in de startposting laat duidelijk zien dat een deel van de tijdaanduiding wordt gebruikt in de datumaanduiding. Namelijk de 23 van de tijd komt als dag.
Hopelijk geeft bovenstaande al een hint waar je het probleem moet zoeken (en de oplossing ervan).

Tijs.
 
Laatst bewerkt:
Ik zie trouwens een inconsistentie in je startposting: Je schrijft dat yyyymmdd - hh:mm moet worden omgezet naar yyyy/mm/dd, maar je voorbeeld geeft een ander format aan, namelijk dd/mm/yyyy.

Tijs.
 
je hebt gelijk betreffende het formaat. Alles moet naar yyyy/mm/dd. Maar ik zie echt niet hoe ik dit kan. ( jij misschien wel :) )
In ieder geval : bedankt voor het kijken naar en om te reageren op deze vraag.

Yuri
 
Even een paar aantekeningen (zie o.a. deze uitleg):
a. DateSerial geeft uitvoer die gebaseerd is op de Windows instellingen m.b.t. datum weergave. Die functie heb je dus niets aan, tenzij in Windows je (in intl.cpl ) het datumformat op yyyy/mm/dd hebt staan. Persoonlijk zou ik daarvan nooit afhankelijk willen zijn (zie ook b.)
b. Ik neem even aan dat je de 'basistabel' 1-op-1 hebt gekopieerd naar Table1
Verder neem ik aan dat de veldnaam Dt als tekst/string is aangegeven. Indien niet, kijk dan even hier, vanaf "Restrictions on data type conversions" om te zien of je conversie/bewerking wel is toegestaan.
Dan zou je het volgende kunnen proberen:
Code:
UPDATE Table1 SET Table1.Dt = Format (Dt, "yyyy/mm/dd");
[Ik heb hier op mijn thuispc geen Access, dus ik kan het niet testen, en ook je bijlage kan ik hier niet openen.]

Tijs.
 
Je datumveld (Dt) is niet van het type Datum/Tijd maar Korte tekst.

Dt.JPG

Daar kan je volgens mij dan niet DateSerial voor gebruiken omdat deze het datatype Date oplevert.
 
De query die Tijs me bezorgde werkt wel in deze gestripte versie:)
Code:
UPDATE Table1 SET Table1.Dt = DateSerial(Left(Dt,4),Mid(Dt,5,2),Mid(Dt,7,2));
Ik moet alleen iets beter lezen en de laatste Mid niet willen vervangen door Right.
Nu hopen dat ze morgen ook draait als ik ze loslaat op de grote broer met 180000 records .
Dank aan allen die meehielpen !

Yuri
 
Komt het er als dd/mm/yyyy uit, kijk naar mijn format verhaal. Dus de format functie zetten rondom het DateSerial verhaal.

Dus zou het dan worden:
Code:
UPDATE Table1 SET Table1.Dt = Format(DateSerial(Left(Dt,4),Mid(Dt,5,2),Mid(Dt,7,2)),"yyyy/mm/dd");

Tijs.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan