Using a date for a datetime field in a SOQL Query [duplicate]

来源:互联网 发布:厉害的淘宝差评怎么写 编辑:程序博客网 时间:2024/06/05 11:32

http://salesforce.stackexchange.com/questions/8896/using-a-date-for-a-datetime-field-in-a-soql-query



5down votefavorite
2

This question already has an answer here:

  • Using a date for a datetime field in a SOQL Query criteria 2 answers

The SF doc explains how to put a Datetime query in a SOQL query.

SELECT IdFROM AccountWHERE CreatedDate > 2005-10-08T01:02:03Z

I need to just put in a date for this query. Something like:

SELECT IdFROM AccountWHERE CreatedDate > 2005-10-08

But that throws an error. Any ideas?

shareimprove this question

marked as duplicate by Ralph Callaway, Daniel Blackhall, eyescream, Saariko Feb 28 '13 at 8:40

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

 

3 Answers

activeoldestvotes
up vote5down voteaccepted

CreatedDate is a datetime field so I guess you would need to specify the time component.

Can you do something like where you just append the time portion to be 12 am by default.

WHERE CreatedDate > 2005-10-08T00:00:00Z

Or you can use Date Literals like

 WHERE CreatedDate > YESTERDAY

For more on date formats and more literal values see,

http://www.salesforce.com/us/developer/docs/soql_sosl/Content/sforce_api_calls_soql_select_dateformats.htm

shareimprove this answer
 
up vote3down vote

If you want to avoid date manipulation with Apex, you could also create a custom date formula field and query off that field. Your formula would look like this:

DATEVALUE(CreatedDate)

Then just query off your custom field.

Let me know if you have any questions.

shareimprove this answer
 
up vote3down vote

You'll want to use a DateTime and compute the range, or use date literals.

Date inputDate = Date.newInstance(2005,10,8);DateTime refDate1 = DateTime.newInstance(inputDate.year(), inputDate.month(), inputDate.day(), 0, 0, 0);DateTime refDate2 = refDate1.addDays(1);List<Account> accounts = [select id from Accountwhere createdDate >= :refDate1and createdDate < :refDate2];

You can bind a date variable into the SOQL Query as well, but the results might not be what you expect.


5down votefavorite
2

This question already has an answer here:

  • Using a date for a datetime field in a SOQL Query criteria 2 answers

The SF doc explains how to put a Datetime query in a SOQL query.

SELECT IdFROM AccountWHERE CreatedDate > 2005-10-08T01:02:03Z

I need to just put in a date for this query. Something like:

SELECT IdFROM AccountWHERE CreatedDate > 2005-10-08

But that throws an error. Any ideas?

shareimprove this question

marked as duplicate by Ralph Callaway, Daniel Blackhall, eyescream, Saariko Feb 28 '13 at 8:40

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

 

3 Answers

activeoldestvotes
up vote5down voteaccepted

CreatedDate is a datetime field so I guess you would need to specify the time component.

Can you do something like where you just append the time portion to be 12 am by default.

WHERE CreatedDate > 2005-10-08T00:00:00Z

Or you can use Date Literals like

 WHERE CreatedDate > YESTERDAY

For more on date formats and more literal values see,

http://www.salesforce.com/us/developer/docs/soql_sosl/Content/sforce_api_calls_soql_select_dateformats.htm

shareimprove this answer
 
up vote3down vote

If you want to avoid date manipulation with Apex, you could also create a custom date formula field and query off that field. Your formula would look like this:

DATEVALUE(CreatedDate)

Then just query off your custom field.

Let me know if you have any questions.

shareimprove this answer
 
up vote3down vote

You'll want to use a DateTime and compute the range, or use date literals.

Date inputDate = Date.newInstance(2005,10,8);DateTime refDate1 = DateTime.newInstance(inputDate.year(), inputDate.month(), inputDate.day(), 0, 0, 0);DateTime refDate2 = refDate1.addDays(1);List<Account> accounts = [select id from Accountwhere createdDate >= :refDate1and createdDate < :refDate2];

You can bind a date variable into the SOQL Query as well, but the results might not be what you expect.

0 0