PostgreSQL条件,其中日期>&引用;“每月第一天”;

PostgreSQL条件,其中日期>&引用;“每月第一天”;,sql,postgresql,date,Sql,Postgresql,Date,不起作用。如何实现wheredate>“本月的第一天”您的my\u时间戳字段的类型是什么 对于datetime它可以正常工作: WHERE my_timestamp > to_char(date_trunc('month', CURRENT_DATE),'YYYY-MM-DD 00:00:00') 如果my_timestamp确实属于timestamp、timestamp WITH timezone、timestamp WITH timezone或DATE类型,则您只需: select

不起作用。如何实现where
date
>“本月的第一天”

您的
my\u时间戳
字段的类型是什么

对于
datetime
它可以正常工作:

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

如果
my_timestamp
确实属于
timestamp
timestamp WITH timezone
timestamp WITH timezone
DATE
类型,则您只需:

select * from my_table where my_table.date > date_trunc('month', current_date);
没别的了。如果
my_timestamp
是一种文本类型,而这正是您使用
to_char()
的原因,那么它是完全错误的。因为一个字符串比另一个字符串大是什么意思?当然,字符串比较不能在这些字符串中定义按日期排序的顺序

更新(感谢您的建议):


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


为什么要将
时间戳
转换为
varchar
,以便将其与
时间戳
进行比较?您可能应该提到在
my_timestamp
是字符串类型的情况下该怎么做(即调用
的一些变体以_timestamp
)。
WHERE my_timestamp > DATE_TRUNC('month', CURRENT_DATE)
WHERE to_timestamp(my_timestamp,'YYYY-MM-DD HH24:MI:SS') > DATE_TRUNC('month', CURRENT_DATE)