Hive時間函數-年份相加減

目前為止搜了很多资料,都没有找到Hive关于时间 年份,月份的处理信息,所以就自己想办法截取啦

本来是用了概数,一年365天去取几年前的日期,后来测试的发现不够精准,然后给提了mantis bug.

emmmmm..... 然后就想办法精准吧,找不到相应函数就自己来凑哈哈哈

例如,我需要取当前时间3年以前的日期 (当前日期为2019年11月14日晚8点+)

实现思路:(通过字符串的截取与拼接)

1.先获取当前时间

2.取的当前时间的年份信息

3.将当前时间的年份信息 减去 3

4.将新的年份与原来的月份及日 拼接

5.即可得到精准的三年以前的数据信息啦

首先我们获取当前时间信息:

select from_unixtime(unix_timestamp()); //输出结果 2019-11-14 20:41:03

得到当前时间的年份:

select from_unixtime(unix_timestamp()); // 输出结果 2019

得到当前时间的年份的三年以前的年数据:

select  year(from_unixtime(unix_timestamp()))-3; //输出结果 2016

拼接 新的年份信息 与 原来的月份及日信息 (因为我这里目前只需要精准到日,所以就不附加时分秒信息了)

select  concat(cast ((year(from_unixtime(unix_timestamp(),'yyyy-MM-dd'))-3) as string),substr(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),5,6)); //输出结果 2016-11-14

以上便得到了我们要的三年以前的今天啦,往后我们在需要使用年份比较数据的时候均可借鉴此思路(再还没有出现合适的年份加减函数之前)

ps: 在实际应用中我们也可以使用具体的日期来代替当前日期

例如: select  concat(cast ((year('2019-11-11')-3) as string),substr('2019-11-11',5,6));  //输出结果 2016-11-11

我们也可以使用数据库中的表日期字段来代替当前日期

例如:select  concat(cast ((year(t.startdate)-3) as string),substr(t.startdate,5,6)) , t.startdate  from  t_testyear t ; // 其中startdate是数据表中的一个日期字段

Hive時間函數-年份相加減的更多相关文章

  1. mysql 將時間戳直接轉換成日期時間

    from_unixtime()是MySQL裏的時間函數 Sql代碼 select uid,userid,username,email,FROM_UNIXTIME(addtime,'%Y年%m月%d') ...

  2. js函數

    函數是什麼?函數就是被事件驅動或者調用執行的可重複的代碼塊. 函數聲明: 使用關鍵詞function,關鍵詞function大小敏感. function a{代碼塊} 局部變量: 在函數內部聲明的變量 ...

  3. ES 處於“initializing”狀態,此時主節點正在嘗試將分片分配到集群中的數據節點。 如果您看到分片仍處於初始化或未分配狀態太長時間,則可能是您的集群不穩定的警告信號。

    指標要點: Cluster status: 如果集群狀態為黃色,則至少有一個副本分片未分配或丟失. 搜索結果仍將完成,但如果更多的分片消失,您可能會丟失數據. 紅色的群集狀態表示至少有一個主分片丟失, ...

  4. SQL窗体函數一例

    需求: MSSQL,列出服務實例中全部數據庫的例如以下信息: 數據庫ID.數據庫名.創建日期.數據文件類型.數據文件大小.數據庫總大小.文件所在路徑. 寫法(後面的百分比為所花時間占比): -- 连接 ...

  5. Python 函數 Function

    函數最初被設計出來,是用來減輕重複 coding 一段相同的代碼,這之間只有代碼 (方法,Method) 的重用,但還沒有物件導向OO整個Object 的屬性與方法被封裝重用的概念. 函數的定義很簡單 ...

  6. python 學習深淺拷貝、集合、、作用域、函數

    python 學習深淺拷貝.集合..作用域.函數 2020開年新冠肺炎流行大部分人員.工廠.單位無法復工生產,人員隔離每天外出都要戴口罩,在家隔離期間悶壞了感覺把半年的口糧都幹掉了,嚴重考察大家的資本 ...

  7. Math.Round函數

    Math.Round這個函數的解釋是將值按指定的小數位數舍入,但並不就是四捨五入.這種舍入有時稱為就近舍入或四舍六入五成雙 其實在 VB, VBScript, C#, J#, T-SQL 中 Roun ...

  8. vb.net 日期時間

    Dim dMyDate As DateTime = DateTime.Now‘當前時間日期 DateDiff("h", C13, C3)’ 二時間差 ‘日期格式 C2 = Form ...

  9. (C/C++) 指向函數的指標

    最近再跟指標做朋友, 正好遇到函數與指標. 其實函數也在程式內也是有屬於自己的位址 所以指標一樣能指向函數, 在此釐清自己的觀念以及記錄下來. #include <stdio.h> #in ...

随机推荐

  1. java 静态变量&静态方法

    1. 静态变量是static修饰的成员变量(类变量),若无static修饰,则是实例变量.静态变量是一种全局变量,它属于某个类,不属于某个对象实例,是在各对象实例间共存.   访问静态变量直接通过类名 ...

  2. 文件上传之靶场upload-labs (1-10)

    第一关 sj 绕过 源码如下: lasIndexOf是返回函数最后一次出现的地方(从右到左) substring是用来截取函数的 indexOf是返回 表示从.出现的地方开始截取并判断是否在允许的字符 ...

  3. dicom 影像通信(scu、scp)的c-echo、c-store、c-find、c-move

    本文主要描述,dicom通信的scu,scp的c-echo.c-store.c-find.c-move的使用. DicomServiceIDicomServiceProviderIDicomCStor ...

  4. docker镜像、docker容器导入导出命令

    一.docker镜像导入导出命令 导出命令: docker save -o <保存路径> <镜像名称:标签> docker save -o ./test.tar test:la ...

  5. Python微信公众号教程基础篇——收发文本消息

    1. 概述: 在本篇教程中,你将学会使用华为云弹性云服务器(以下简称 ECS)搭建微信公众号处理后台,使用Python语言编写对应的微信消息处理逻辑代码,接收从微信服务端转发过来的消息,并返回处理结果 ...

  6. 工作流Activity组件值数据传递获取问题

    如图:先简单说一下大致过程 通过具体的菜单节点,加载具体的指令组件.本着低耦合的原件,需要将核查组件从指令组件重拆分出来,作为单独的组件根据业务需要拖拽到指令组件中.但是具体业务方面核查组件一方面需要 ...

  7. Java修炼——ArrayList常用的方法以及三种方式遍历集合元素。

    List接口ArrayList用法详解 ArrayList常用方法: 1. List.add():添加的方法(可以添加字符串,常量,以及对象) List list=new ArrayList(); l ...

  8. [TimLinux] myblog 数据表格显示

    1. 设计 2. 数据 创建数据库用户: CREATE USER IF NOT EXISTS 'user1'@'MyBlogPwd123'; GRANT ALL ON d1.* TO 'user1'@ ...

  9. GIS学习汇总

    GIS之家: Geoserver: geoserver安装部署步骤 geoserver发布地图服务WMS geoserver发布地图服务WMTS geoserver集成以及部署arcgis serve ...

  10. Ubuntu18.04安装openCV4.1.2

    Ubuntu18.04下安装openCV4.1.2 注意: 在整个安装过程中,包括后期QT的使用中不要出现中文路径.会很坑的. 一.下载openCV4.1.2 可以再官网进行下载https://ope ...