Clickhouse--时区,年,季度,半年

20 篇文章 2 订阅
8 篇文章 0 订阅

SQL 年,季度,半年

-- 月度
SELECT concat(toString(toYear(now())),'年',toString(toMonth(now())),'月');

-- 季度
SELECT concat(toString(toYear(now())),'年',if(toMonth(now())/6>1,if(toMonth(now())/3>3,'4季度','3季度'),if(toMonth(now())/3>1,'2季度','1季度')));

-- 半年度
SELECT concat(toString(toYear(now())),'年',if(toMonth(now())/6>1,'下半年','上半年'));

-- 日期格式化
SELECT FROM_UNIXTIME(now(),'%Y-%m');

-- 季度
select toString(toQuarter(now()));

时区

默认设置

Clickhouse默认是读取操作系统的时区。

Clickhouse 提供设置时区参数

1.修改设置
sudo vim /etc/clickhouse-server/config.xml
 
<timezone>Asia/Shanghai</timezone>
 由于clickhouse是俄罗斯人主导开发的,默认设置为Europe/Moscow
2.重启服务器:
sudo service clickhouse-server restart
 
 
配置文件说明如下:
 <!-- Server time zone could be set here.
         Time zone is used when converting between String and DateTime types,
          when printing DateTime in text formats and parsing DateTime from text,
          it is used in date and time related functions, if specific time zone was not passed as an argument.
         Time zone is specified as identifier from IANA time zone database, like UTC or Africa/Abidjan.
         If not specified, system time zone at server startup is used.
         Please note, that server could display time zone alias instead of specified name.
         Example: W-SU is an alias for Europe/Moscow and Zulu is an alias for UTC.
    -->
    <!-- <timezone>Europe/Moscow</timezone> -->
 
时区在日期时间相关的函数,若指定时区作为参数。在Datetime和String类型之间进行转换。
时区的指定是按照IANA标准的时区库指定的,可以在Linux系统中通过命令查询
若不指定则使用系统启动的时区。

使用默认服务器时区

-- 北京时区
SELECT
    now() AS BJ_time,
    toString(BJ_time),
    formatDateTime(now(), '%F %T') AS bj_time,
    toTimeZone(now(), 'America/New_York') AS NY_time

Query id: 3e50f4ec-2f7e-4f15-b8b1-6aa9af87bfe4

┌─────────────BJ_time─┬─toString(now())─────┬─bj_time─────────────┬─────────────NY_time─┐
│ 2022-01-10 23:08:522022-01-10 23:08:522022-01-10 23:08:522022-01-10 10:08:52 │
└─────────────────────┴─────────────────────┴─────────────────────┴─────────────────────┘
-- 伦敦时间

SELECT
    now() AS LD_time,
    toString(LD_time),
    formatDateTime(now(), '%F %T') AS ld_time,
    toTimeZone(now(), 'America/New_York') AS NY_time

Query id: ce2558a9-de2f-41fb-8059-fb2be76cca1f

┌─────────────LD_time─┬─toString(now())─────┬─ld_time─────────────┬─────────────NY_time─┐
│ 2022-01-10 15:09:312022-01-10 15:09:312022-01-10 15:09:312022-01-10 10:09:31 │
└─────────────────────┴─────────────────────┴─────────────────────┴─────────────────────┘
  • DataGrip 查询北京时区时间
    在这里插入图片描述
  • DataGrip 查询伦敦时区时间
    在这里插入图片描述

以上截图和客户端世家执行结果不相同,DataGrip 默认采用的是世界标准时间
idea访问clickhouse的话,需要配置连接高级选项,设置
use_time_zone = UTC+8,use_server_time_zone=false
应用即可
在这里插入图片描述

Linux下修改系统时间

获取系统时间

date -R

在这里插入图片描述
+0800 为东八区时区

设计服务器时间

先设日期

date -s 20140712

再设时间

date -s 18:30:50

一台机器还好说,多了你就会烦了。有没有一步到位的办法呢?几经搜索发现有!

date 071218302014(月日时分年)

这样可以一步到位。但是!但是什么呢,对于Linux来说,这样的写法太不human

date -s “20140712 18:30:50”

这样就可以一步到位

时间设置完了就要保存了。如果你会正常关机还好说。系统关的时候会保存一次,可是如果你可能不正常关机的话,可以这么先保存一下设置

hwclock --systohc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Abner G

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值