Skip to content

Instantly share code, notes, and snippets.

@fsans
Last active December 13, 2023 18:36
Show Gist options
  • Save fsans/178756faaa412d175c740dc60f4c0461 to your computer and use it in GitHub Desktop.
Save fsans/178756faaa412d175c740dc60f4c0461 to your computer and use it in GitHub Desktop.
Format FileMaker Timestamp to SQL92 syntax

SQL92Timestamp(fmtimestamp)

Let (
[ 
	_error = ""; 
	_dateOrder = JSONGetElement( Get(FileLocaleElements); "Date.DateOrderName");
	_elements	= Split( fmtimestamp; " ");

	_date = GetValue( _elements; 1 );
	_error = List(_error; Case( IsEmpty ( _date ) or not IsValid( GetAsDate( _date ) ); "error"));
	_sql_date = Let ( 
                [
                    _e = Split( _date; "/" ); 
                    _Y = GetValue( _e; 1 ); 
                    _M = GetValue( _e; 2 ); 
                    _D = GetValue( _e; 3 )
                ]; 
                Join( 
                    Case( _dateOrder="DMY"; List( _D; _M; _Y );
                    Case( _dateOrder="MDY"; List( _M; _D; _Y );
                    Case( _dateOrder="YMD"; List( _Y; _M; _D );
                    Case( _dateOrder="YDM"; List( _Y; _D; _M )
                	    ) ) ) ); "-" ) 
                );
	_time = GetValue( _elements; 2 ); 
	_time = GetAsTime( Case( IsEmpty( _time ); "0" ; _time ) );    
	_error = List(_error; Case(not IsValid ( _time ); "error"))
];
	Case( IsEmpty( _error ); "TIMESTAMP '" & _sql_date & " " & _time & "'"; Join(_error;"/") ) 
)

/*
 by air.fsans@gmail.com 2022
 FM Timestamp to SQL std Timestamp
 
 TimestampToSQL(fmtimestamp)
 
 08/07/2022 10:46:18 -> TIMESTAMP '2022-07-08 10:46:18'
 08/07/2022          -> TIMESTAMP '2022-07-08 00:00:00'
 08/30/2022          -> "error" (Warnig! date must be DD/MM/YYY)
 08/07/2022 10:66:18 -> TIMESTAMP '08/07/2022 11:06:18' (Warnig! >59 minutes(seconds) -> +1 hour(minute)
 
 comaptibility:
    FileMaker >= 19.5
    
 dependencies:
    Split(str, delim) https://gist.github.com/fsans/2362de406f7935d9c9e56ed44aa10db0
    Join(fmlist, delim)
*/
@fsans
Copy link
Author

fsans commented Jul 8, 2022

Be aware that FileMaker 19.5+ is required since I'm using Get(FileLocaleElements) to get the system locale metadata to use the right format (DMY, MDY, YMD,... )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment