Ik krijg een Excel sheet binnen dat ik in een database moet zetten. Er staat een datumveld in waarin de datum als gewoon 5- of 6-cijferig getal is ingevoerd in dMMyy notatie, dus 20106 voor 2 januari 2006 of 130106 voor 13 januari 2006.
Nu wil ik dat veld omzetten naar een goed datumveld. In eerste instantie heb ik het veld opgebroken in de dd, MM en yy stukjes en er een - tussen gezet, met de volgende formule:
Dat werkt bij mij wel lekker (Windows datum formaat op dd-MM-yy), maar bij een collega niet (Windows datum format op M/d/yyyy). In een query werkt het wel, dan krijg je voor 20106 mooi de string "02-01-06" en voor 130106 de string "13-01-06", maar als dat in een Date veld gezet wordt dan wordt "02-01-06" naar "2/1/2006" omgezet (klopt niet, dag en maand omgedraaid), en "13-01-06" wordt "1/6/2013"
Wat ik ook probeer, ik krijg deze conversie met die datuminstelling (M/d/yyyy) niet spits.
Ik heb geprobeerd:
• CDate() rond bovenstaande formule te zetten, zelfde resultaat;
• format(..., "dd-mm-yy") rond bovenstaande formule te zetten, zelfde resultaat;
• CDate([DATE]) geprobeerd, dan wordt het nog wilder, en wordt 20106 als datevalue gezien (= 1/17/1955, 30106 = 6/4/1982)
• format([DATE],"ddmmyy") geprobeerd, zelfde probleem als CDate([DATE]).
• bovenstaande formule Y2K-buggificeren door "20" voor het jaar te plaatsen, dan wordt alles van 10106 tot 120106 (1-12 januari) vertaalt naar 1/1/2006 tot 12/1/2006 (januari-december, 1) en vanaf 130106 gaat het weer goed.
Iemand enig idee hoe ik dit voor elkaar krijg? Cruciaal punt: je weet niets van het datumformaat af, dus je kunt daar ook geen rekening mee houden.
Wat ik me vooral afvraag: waarom accepteert Access het niet als je die tweede optie doet? Dan verplicht je Access toch om een conversie met een bepaald formaat te doen, en wat het output formaat is is dan toch niet van belang?
Nu wil ik dat veld omzetten naar een goed datumveld. In eerste instantie heb ik het veld opgebroken in de dd, MM en yy stukjes en er een - tussen gezet, met de volgende formule:
code:
1
| Expr1: Left(Format([DATE],"000000"),2) & "-" & Left(Right([DATE],4),2) & "-" & Right([DATE],2) |
offtopic:
waarom werkt mid in Access niet?
waarom werkt mid in Access niet?
Dat werkt bij mij wel lekker (Windows datum formaat op dd-MM-yy), maar bij een collega niet (Windows datum format op M/d/yyyy). In een query werkt het wel, dan krijg je voor 20106 mooi de string "02-01-06" en voor 130106 de string "13-01-06", maar als dat in een Date veld gezet wordt dan wordt "02-01-06" naar "2/1/2006" omgezet (klopt niet, dag en maand omgedraaid), en "13-01-06" wordt "1/6/2013"
Wat ik ook probeer, ik krijg deze conversie met die datuminstelling (M/d/yyyy) niet spits.
Ik heb geprobeerd:
• CDate() rond bovenstaande formule te zetten, zelfde resultaat;
• format(..., "dd-mm-yy") rond bovenstaande formule te zetten, zelfde resultaat;
• CDate([DATE]) geprobeerd, dan wordt het nog wilder, en wordt 20106 als datevalue gezien (= 1/17/1955, 30106 = 6/4/1982)
• format([DATE],"ddmmyy") geprobeerd, zelfde probleem als CDate([DATE]).
• bovenstaande formule Y2K-buggificeren door "20" voor het jaar te plaatsen, dan wordt alles van 10106 tot 120106 (1-12 januari) vertaalt naar 1/1/2006 tot 12/1/2006 (januari-december, 1) en vanaf 130106 gaat het weer goed.
Iemand enig idee hoe ik dit voor elkaar krijg? Cruciaal punt: je weet niets van het datumformaat af, dus je kunt daar ook geen rekening mee houden.
Wat ik me vooral afvraag: waarom accepteert Access het niet als je die tweede optie doet? Dan verplicht je Access toch om een conversie met een bepaald formaat te doen, en wat het output formaat is is dan toch niet van belang?
[ Voor 26% gewijzigd door Maasluip op 24-04-2006 14:38 ]
Signatures zijn voor boomers.