SalesforceのSOQLを作るときに、Datetime型は通常のString型などに比べてフォーマットが異なるので、メモです。
また、特にDatetime型は日本時間など、タイムゾーンを気にしないと、取得できるレコードが想定と異なる場合もあるので、注意が必要です。
private String getFormatedDatetime(Datetime sourceDatetime){
return sourceDatetime.format('yyyy-MM-dd\'T\'HH:mm:ss.000\'+0900\'', 'Asia/Tokyo');
}
String getQuery = 'SELECT Id, Name FROM Contact ' +
'Where IsDeleted = FALSE ' +
' and SystemModstamp <= ' + getFormatedDatetime('Datetime項目') +
' ORDER BY StartDatetime__c ';
List<CompetitionDate__c> selectCdList = Database.query(getQuery);