PostgreSQL条件,其中日期> “本月的第一天”

时间:2015-11-03 17:05:27

标签: sql postgresql date

WHERE my_timestamp > to_char(date_trunc('month', CURRENT_DATE),'YYYY-MM-DD 00:00:00') 

不起作用。如何实现date> “这个月的第一天”?

2 个答案:

答案 0 :(得分:3)

如果my_timestamp确实属于TIMESTAMPTIMESTAMP WITH TIME ZONETIMESTAMP WITHOUT TIME ZONEDATE,那么您唯一需要的是:

WHERE my_timestamp > DATE_TRUNC('month', CURRENT_DATE)

仅此而已。如果my_timestamp是其中一种文字类型,这就是您使用to_char()的原因,那么它就完全错了。因为什么意味着一个字符串比另一个字符串更大?确保字符串比较不能在这些字符串中按日期定义顺序。

更新(感谢jpmc26提出建议):

如果my_timestamp是字符串,则需要将其强制转换为TIMESTAMP rahter而不是将CURRENT_DATE强制转换为字符串(请记住使用时间格式my_timestamp)。

WHERE to_timestamp(my_timestamp,'YYYY-MM-DD HH24:MI:SS') > DATE_TRUNC('month', CURRENT_DATE)

答案 1 :(得分:0)

my_timestamp字段的类型是什么?

对于datetime,它可以正常工作:

select * from my_table where my_table.date > date_trunc('month', current_date);