decode(sign(trunc(a.bbskrq)-trunc(now())),-1,'是','否')转postgersql
时间: 2024-11-06 18:15:16 浏览: 25
这个表达式看起来像是某种数据库查询语言的自定义函数或逻辑,用于判断日期差是否大于0。在PostgreSQL中,我们可以分解并重构它。这里是一个近似的转换:
首先,`sign(x)` 函数在SQL中通常不存在,但它可以理解为返回数值x的正负符号,可以用 `CASE` 表达式代替:
```sql
CASE WHEN trunc(a.bbskrq) - trunc(current_timestamp) > 0 THEN 1 ELSE -1 END
```
接着,`decode` 或 `COALESCE` 函数在PostgreSQL里可以用三元运算符 `(expression) IS NULL OR (expression) = value` 替换,如果表达式结果非零,则返回'是',否则返回'否':
```sql
CASE
WHEN trunc(a.bbskrq) - trunc(current_timestamp) > 0 THEN '是'
ELSE '否'
END
```
完整的SQL查询可能是这样的,假设存在表a并且字段bbskrq存储了日期时间值:
```sql
SELECT
CASE
WHEN EXTRACT(YEAR FROM AGE(a.bbskrq, current_timestamp)) > 0 THEN '是'
ELSE '否'
END AS result
FROM your_table_name a;
```
这里我们使用了`EXTRACT`函数来计算两个日期之间的年份差异。
阅读全文