Ada*_*tan 7 postgresql index string-representation
如何索引to_char()
列的 a ?
我试过了:
adam_db=> CREATE INDEX updates_hourly_idx
ON updates (to_char(update_time, 'YYYY-MM-DD HH24:00'));
Run Code Online (Sandbox Code Playgroud)
但是得到了错误:
错误:必须标记索引表达式中的函数
IMMUTABLE
这看起来很奇怪,因为to_char()
时间戳是相当不可变的。
任何想法如何生成该索引?
接受的格式to_char(timestamp, text)
包括使其不可变的本地化模式。
相同输入的不同结果示例:
测试=>开始; 测试 => 设置 lc_time='en_US.utf8'; 测试 => 选择 to_char(now()::timestamp, 'TMDay'); to_char --------- 周一 测试=> 将 lc_time 设置为 'fr_FR.utf8'; 测试 => 选择 to_char(now()::timestamp, 'TMDay'); to_char --------- 隆迪 测试=>结束;
如果不使用这种格式,解决方案是创建自己的不可变包装函数,
CREATE FUNCTION custom_to_char(timestamp) RETURNS text AS
$$ select to_char($1, 'YYYY-MM-DD HH24:00'); $$
LANGUAGE sql immutable;
Run Code Online (Sandbox Code Playgroud)
然后在该函数上创建索引。
归档时间: |
|
查看次数: |
4704 次 |
最近记录: |