ClickHouse 没有任何内置函数将格鲁吉亚日期转换为 Jalali 日期,但您可以按照以下步骤创建一个函数来执行此操作:
1.安装Python库
sudo pip install jdatetime
2. 创建一个脚本将公历日期转换为 Jalali 日期
sudo nano /var/lib/clickhouse/user_scripts/georgian_to_jalali.py
#!/usr/bin/python3
import jdatetime
import sys
def georgian_to_jalali(date_str):
georgian_date = jdatetime.datetime.strptime(date_str, '%Y-%m-%d')
jalali_date = jdatetime.datetime.fromgregorian(datetime=georgian_date).strftime('%Y-%m-%d')
return jalali_date
def main():
for line in sys.stdin:
date_str = str(line.rstrip())
print(georgian_to_jalali(date_str), end='')
sys.stdout.flush()
if __name__ == "__main__":
main()
不要忘记这个文件应该是可执行的或者你可以这样做chmod 777 georgian_to_jalali.py
3.创建ClickHouse函数
sudo nano /etc/clickhouse-server/georgian_to_jalali_function.xml
<functions>
<function>
<type>executable</type>
<name>georgian_to_jalali</name>
<return_type>String</return_type>
<argument>
<type>String</type>
<name>value</name>
</argument>
<format>TabSeparated</format>
<command>georgian_to_jalali.py</command>
</function>
</functions>
Finally
您可以运行此查询
SELECT today() as georgian_date, georgian_to_jalali(today()) as jalali_date;
or
SELECT georgian_to_jalali('2023-01-15') as jalali_date;
你的结果看起来像这张图
有关ClickHouse功能的更多信息,您可以read