7

I'm trying to get a DateTime to format into a value to be used in a dynamic query. For some reason, the documentation snippet on how to format a DateTime for a query is giving me an exception.

Im trying to run this anonymous apex snippet:

System.debug(DateTime.now().format('YYYY-MM-DDThh:mm:ssZ'));

The format string I'm using is specified on Date Formats and Date Literals.

The exception I'm getting back is:

Line: 1, Column: 1 System.StringException: Unrecognized format: YYYY-MM-DDThh:mm:ssZ

If I remove the T, the string is accepted, but isn't in the right format to query on.

System.debug(DateTime.now().format('YYYY-MM-DD hh:mm:ssZ'));

Output:

2016-03-75 04:01:33-0400

Additionally, if I take the date literals provided on the page, and use them in a query, the query accepts the string, but still won't let me try to format a DateTime into the same Date Format as the accepted Date Literal.

Example:

[SELECT Id FROM Account WHERE Some_Date__c > 1999-01-01T23:01:01Z]
  • 1
    Why are you formatting DateTime values instead of just binding directly to the variable? – sfdcfox Mar 15 '16 at 21:12
  • The formatted date string is being used later on in a partner api query operation, so I can't use a bind variable inside the query string. – battery.cord Mar 16 '16 at 14:42
9

Attribution

Use:

system.debug(Datetime.now().formatGMT('yyyy-MM-dd\'T\'HH:mm:ss.SSS\'Z\''));

The esteemed Mr Ballinger also recommends the following, but it is wrapped in double quotes and slower, so I would probably not use it, myself.

system.debug(JSON.serialize(Datetime.now()));
5

You are linking into formats used in SOQL engine. Please refer to Apex reference and Java SimpleDateFormat for more advanced formats.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.