如果字段是时间戳,如何按日期选择?

时间:2015-11-27 13:26:45

标签: java sql hibernate postgresql

我有一个数据库字段timestamp without timezone,其值为2015-11-23 14:42:55.278

现在我想只使用日期部分2015-11-13找到数据库记录。

这可能吗?

理想情况下使用hibernate和spring。

3 个答案:

答案 0 :(得分:2)

如果您只想获取2015-11-13的那一天,那么您可以使用between关键字并使用时间戳开头来获取所有记录。

dateField between 2015-11-13:<time_of_beginning_of_day> AND 2015-11-14:<time_of_beginning_of_next_day>

dateField between 2015-11-13:<time_of_beginning_of_day> AND 2015-11-13:<time_of_end_of_day>

答案 1 :(得分:2)

我不确定是否是性能方面的最佳方式,但您可以在2015-11-23 00:00:00.0002015-11-23 23:59:59.999之间搜索日期

答案 2 :(得分:1)

您可以将列强制转换为日期,例如:

Postgres具体:

the_timestamp_column::date = date '2015-11-13'

或(标准SQL)

cast(the_timestamp_column as date) = date '2015-11-13'

您还可以使用date_trunc()

将时间戳“缩减”到不同的级别

http://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC