Firebird:将日期转换为相关格式?

时间:2013-06-11 12:15:22

标签: sql firebird

我有一个SQL查询,它使用COALESCE来选择非空日期:

SELECT ...
WHERE 
  COALESCE (date1, date2 ) >= '06/11/2013' AND
  COALESCE (date1, date2 ) <= '06/11/2013' 

问题是,date1是时间戳,date2是日期。所以,如果date1有一个值:

  06/11/2013 11:00:00

在where子句中没有调用IT。即:

 COALESCE (date1, date2 ) >= '06/11/2013' ==> TRUE
 COALESCE (date1, date2 ) <= '06/11/2013' ==> FALSE

我认为这是因为时间被转换为

  06/11/2013 00:00:00

如何转换'06 / 11/2013',以便上述查询等于true,无论day1和date2中的值是什么时间?我只关心这一天,而不是时间。

1 个答案:

答案 0 :(得分:4)

我不使用Firebird,但是从文档中,您可以将时间戳转换为日期(顺便说一句,我很惊讶您可以使用不同类型的coalesce,但是。那是另一个问题。)

所以要么

COALESCE(CAST(date1 as date), date2)

或Firebird快捷方式

COALESCE(date date1, date2)

如果您遇到错误,可以尝试查看

时发生的情况
select CAST(date1 as date) from ...