idmix.be Posted October 28, 2014 Posted October 28, 2014 Kan iemand volgende syntax aanpassen zodanig dat ik de opgehaalde datum in het juiste formaat (dd/mm/yyyy) krijg ? ExecuteSQL ("SELECT Geboortedatum FROM crmT03_PRS_Persoon WHERE fID_Contact = ?" ; "" ; "" ; B_crmT98_DAE_START::g_CON_ID_Contact) Het opgehaald resultaat is nu yyyy-mm-dd, en ik zou het liefst Britisch/French formaat hebben, dus dd/mm/yyyy Thanks a heap, want ik zit hier al een hele tijd achter te zoeken. Quote
0 menno Posted October 28, 2014 Posted October 28, 2014 Let( [ sqldate = ExecuteSQL ("SELECT Geboortedatum FROM crmT03_PRS_Persoon WHERE fID_Contact = ?" ; "" ; "" ; B_crmT98_DAE_START::g_CON_ID_Contact) ; y = Left ( sqldate ; 4 ) ; m = middle ( sqldate ; 6 ; 2 ) ; d = right ( sqldate ; 2 ) ] ; Date ( m ; d ; y ) ) Quote
0 idmix.be Posted October 29, 2014 Author Posted October 29, 2014 Lovely Ik had voorlopig soortgelijks gedaan met een extra script step, maar dit is ongetwijfeld performanter. Thanks Quote
0 hans erik Posted October 29, 2014 Posted October 29, 2014 Ik zou de parsing v.d. datumstring toch iets anders doen, want ik krijg soms de datum uit een SQL query terug als YY/MM/DD, en dat gaat niet goed op deze manier! Misschien de / of - vervangen door spaties en dan leftwords() enzovoorts. sqldate = substitute ( sqldate ; [ "/" ; " "] ; [ "-" ; " " ]) y = right ( "20" & leftwords ( sqldate ; 1); 4 ) Enz. Quote
0 menno Posted October 29, 2014 Posted October 29, 2014 @HE is dat dan van een FM-db of krijg je dit formaat terug van een ESS/ODBC-bron? Ik gebruik ExecuteSQL sinds een jaar of drie heel erg veel en heb dit probleem nog niet een keer gehad met een FM-db. Quote
0 hans erik Posted October 30, 2014 Posted October 30, 2014 FileMaker database. Volgens mij hangt het af van de systeeminstellingen en de FileMaker taalversie. Ik dacht ook even: handig, ik haal gewoon de datum er even uit. In ORACLE kun bijvoorbeeld met de functie TO_TEXT( date , 'DD-MM-YYYY' ) direct een tekststring produceren, maar helaas, executeSQL ondersteunt dat niet. Datum, tijd en decimale notatie blijven toch de notoire zorgenkindjes. Quote
0 menno Posted October 30, 2014 Posted October 30, 2014 Volgens Filemaker Inc houdt FM zich strikt aan de SQL-92 standaard, die op zijn beurt weer data handhaaft volgens ISO8601:2004 waarin nog slechts 2 formaten zijn toegestaan yyyy-mm-dd en yyyymmdd verder niets. Je moet dus eigenlijk de datum die je terugkrijgt filteren: Let( [ sqldate = Filter ( ExecuteSQL ("SELECT Geboortedatum FROM crmT03_PRS_Persoon WHERE fID_Contact = ?" ; "" ; "" ; B_crmT98_DAE_START::g_CON_ID_Contact) ; "0123456789" ) ; y = Left ( sqldate ; 4 ) ; m = middle ( sqldate ; 5 ; 2 ) ; d = right ( sqldate ; 2 ) ] ; Date ( m ; d ; y ) ) en dan zit je volgens de officiéle standaard goed. Het formaat zonder eeuwaanduiding kan volgens de definitie niet door ExecuteSQL worden teruggegeven, tenzij het opgevraagde veld geen datum0-veld is, maar daar gaat dit voorbeeld niet van uit. Quote
Question
idmix.be
Kan iemand volgende syntax aanpassen zodanig dat ik de opgehaalde datum in het juiste formaat (dd/mm/yyyy) krijg ?
ExecuteSQL ("SELECT Geboortedatum FROM crmT03_PRS_Persoon WHERE fID_Contact = ?" ; "" ; "" ; B_crmT98_DAE_START::g_CON_ID_Contact)
Het opgehaald resultaat is nu yyyy-mm-dd, en ik zou het liefst Britisch/French formaat hebben, dus dd/mm/yyyy
Thanks a heap, want ik zit hier al een hele tijd achter te zoeken.
6 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.