Jump to content
  • 0

Execute SQL + Datumformaat


idmix.be

Question

Posted

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

  • 0
Posted
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 ) 
) 

  • 0
Posted

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.

  • 0
Posted

@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.

  • 0
Posted

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.

  • 0
Posted

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.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...