我需要将以下SQL服务器代码转换为PostgreSQL代码。 任何帮助将不胜感激。
SQLServer SQL:
CAST(DATEADD(ww,DATEDIFF(ww,0,trans_date),-1)as date) as week
我认为该代码的作用是将trans_date
的值"舍入"到本周的开头。在 Postgres 中,您可以使用date_trunc()
函数执行此操作:
date_trunc('week', trans_date)
请注意,这总是返回一个timestamp
,如果你需要一个真实的date
值,则强制转换结果:
date_trunc('week', trans_date)::date
如果应该是一周开始的前一天,只需从结果中减去一天:
date_trunc('week', trans_date)::date - 1