前言
由于开发的时候 有个同事当初选择使用的money类型 这里对money类型做一些笔记 方便速查
货币类型存储方案
在只处理RMB的情况下 ×10 ×100 ×1000 来转换为int类型 避免精度丢失是比较简单的方案
如果存在不同货币 如RMB 和USD
一般来说 也是 ×10 ×100 ×1000 然后使用一个type类型来区分也是很容易
postgres提供一个专用类型 ‘money’ 存储的时候也是使用bigint存储 但是会根据区域自动格式化为所在区域货币字符串
如 RMB ‘¥100’ USD’$100’
调整money类型识别的区域配置
zh_CN.UTF-8 , en_US.UTF-8
1 | --显示当前money 区域 |
或者设置 postgresql.conf
1 | lc_monetary=zh_CN.UTF-8 |
操作money类型字段
1 | --insert 按照常规int insert即可 |
总结
postgres 提供一些特殊类型 尽量科学的使用 避免bug
例如money类型 会跟当前的本地区域配置 或者lc_monetary配置有关 需要去独立处理