pg_bikram_sambat
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_bikram_sambat | 0.1.0 | TYPE | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 3860 | pg_bikram_sambat | 否 | 是 | 否 | 是 | 否 | 是 | - |
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 0.1.0 | 1817161514 | pg_bikram_sambat | - |
| RPM | PIGSTY | 0.1.0 | 1817161514 | pg_bikram_sambat_$v | - |
| DEB | PIGSTY | 0.1.0 | 1817161514 | postgresql-$v-pg-bikram-sambat | - |
构建
您可以使用 pig build 命令构建 pg_bikram_sambat 扩展的 RPM / DEB 包:
安装
您可以直接安装 pg_bikram_sambat 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
使用 pig 或者是 apt/yum/dnf 安装扩展:
创建扩展:
用法
来源:PGXN metadata、PGXN source tree、type SQL、function SQL、operator SQL、cast SQL、regression examples、TODO
来源说明:CSV 中的 GitHub URL 不可用,因此本文依据官方 PGXN 元数据与源码包 SQL。
pg_bikram_sambat 添加 bs_date 类型,用于 Bikram Sambat 日期,并提供转换、格式化、比较和 btree 索引支持。按普通 PostgreSQL 扩展安装:
日期类型
bs_date 存储 Bikram Sambat 日期,并以 YYYY-MM-DD 显示。文本输入接受用 /、- 或 . 分隔的年/月/日值;当年份出现在最后一个字段时,输入解析器也接受日优先字符串。
像其他 PostgreSQL 类型一样在表中使用:
转换函数
ad_to_bs(date) 将 Gregorian date 转换为 bs_date:
current_bs_date() 返回转换为 bs_date 的当前事务时间戳,因此同一事务内重复调用是稳定的:
版本 0.1.0 不暴露 SQL bs_to_ad() 函数,也没有直接的 bs_date 到 date cast;上游 TODO 文件将这些列为后续工作。
格式化
该扩展为 bs_date 重载 PostgreSQL to_char:
支持的日期格式 token 为 YYYY、YY、Month、Mon、MM、Day、Dy 和 DD。月份与星期名称会跟随格式 token 的大小写,因此 MONTH、Month 和 month 分别生成大写、标题式大小写和小写英文名称。
第三个参数传入 dev 时,使用 Devanagari 数字、月份名称和星期名称:
操作符与索引
bs_date 支持比较操作符 =、<>、>、>=、< 和 <=。默认 btree 操作符类 bs_date_ops 支持普通 btree 索引、范围谓词和排序:
注意事项
打包的转换数据集覆盖 BS 年份 2000 到 2100,并以 1943-04-14 AD 作为 2000-01-01 BS 的参考日期。参考日期之前或映射 BS 范围之外的日期会抛出 PostgreSQL 错误。该扩展定义了从 text 到 bs_date 的隐式 cast,但没有定义从任意数值类型到 bs_date 的 cast。