Sql 基于具有可变年份的日期创建新列

Sql 基于具有可变年份的日期创建新列,sql,postgresql,Sql,Postgresql,正如主题所说,这一切都应该适用于具有可变年份的日期 我想创建一个新的列(例如称为which_part),说明日期(在本例中,日期为“sil.sales_invoice_date”)是否在1月1日至6月30日之间,即H1(半1),否则为H2(7月1日至年底) 我试过用convert做类似的事情 它根本不起作用,而且我不能在那里写[半年] 我也尝试使用 case sil.sales_invoice_date between 但我真的不知道如何将其格式化以使用可变年份。如果日期的格式为dd.mm.

正如主题所说,这一切都应该适用于具有可变年份的日期

我想创建一个新的列(例如称为which_part),说明日期(在本例中,日期为“sil.sales_invoice_date”)是否在1月1日至6月30日之间,即H1(半1),否则为H2(7月1日至年底)

我试过用convert做类似的事情

它根本不起作用,而且我不能在那里写[半年]

我也尝试使用

case sil.sales_invoice_date between 

但我真的不知道如何将其格式化以使用可变年份。

如果日期的格式为dd.mm.yyyy 试试这个


把那些CONVERT放在select列表中,而不是from子句中。你的问题毫无意义。
convert()
s看起来不像Postgres语法。示例数据和所需的支持将非常有用。抱歉,这是我的错误,它是在正确的代码中选择的。子字符串似乎不适合我,我不知道为什么。也许值得一提的是,我对postgres db进行了操作
case sil.sales_invoice_date between 
Case when substr(sil.sales_invoice_date,1,5) between '01.01' and '30.06' then 'H1'
else 'H2'
end as which_part;