【问题标题】:cast double precision as currency in postgresql在 postgresql 中将双精度转换为货币
【发布时间】:2017-08-28 16:25:23
【问题描述】:

我无法将双精度值转换为货币。

SELECT scrap_cost.year AS year
, scrap_cost.weekly AS week
, scrap_cost.scrap_cost::MONEY
, labor_cost.labor_cost::MONEY
FROM ...

返回

ERROR:  cannot cast type double precision to money
LINE 4: ..., scrap_cost.scrap_cost::MONEY, labor_cost.labor_cost::money
                                                            ^
********** Error **********

ERROR: cannot cast type double precision to money
SQL state: 42846
Character: 117

【问题讨论】:

  • 您为什么要这样做? money 是一个非常没用的数据类型。
  • 我正在 PG admin 中编写查询。它在 SSRS 中很好地返回
  • 您应该首先将其存储为numericdouble 只是一个近似数据类型。如果您希望能够检索存储的值,则应远离 double。 money 没有numeric 的优势,但有很多怪癖和劣势。
  • Money 以美元符号开头。这是我想要的结果。
  • 除非您不使用美元作为您的货币(在我的系统上它显示为 € 符号)wiki.postgresql.org/wiki/Don%27t_Do_This#Don.27t_use_money

标签: postgresql


【解决方案1】:

我解决这个问题的方法是先将它转换为numeric

SELECT 
    scrap_cost.year AS year
    , scrap_cost.weekly AS week
    , scrap_cost.scrap_cost::MONEY 
    , labor_cost.labor_cost::NUMERIC::MONEY
FROM ...

我在postgresdocumentation找到了解决办法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 2010-10-08
    • 1970-01-01
    • 2017-05-18
    相关资源
    最近更新 更多