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. Xtrabackup 全备和还原以及增量备份和还原

    目录 MySQL环境介绍 全备和还原 准备备份目录 创建测试数据 全量备份 模拟删除数据 还原数据操作 第一步 备份备份文件 第二步 关闭数据库 第三步 移除数据库的data目录 第四步 恢复前准备 ...

  2. MySQL5.7.18自动化安装脚本

    背景 很好的朋友邱启明同学,擅长MySQL,目前任职某大型互联网业MySQL DBA,要来一套MySQL自动安装的Shell脚本,贴出来保存一些. 此版本为 MySQL 5.7.18 ###### 自 ...

  3. 告别编码5分钟,命名2小时!史上最全的Java命名规范参考!

    简洁清爽的代码风格应该是大多数工程师所期待的.在工作中笔者常常因为起名字而纠结,夸张点可以说是编程5分钟,命名两小时!究竟为什么命名成为了工作中的拦路虎. 每个公司都有不同的标准,目的是为了保持统一, ...

  4. MySQL必知必会(Select, Where子句)

    SELECT prod_name, prod_price FROM products WHERE prod_price = 2.5; SELECT prod_name, prod_price FROM ...

  5. 揭秘 iOS App Extension 开发 —— Today 篇

    转自:http://www.cocoachina.com/ios/20160619/16760.html 本文授权转载,作者:Cyandev(简书) 从 iOS 8 开始,苹果引入了全新的 App E ...

  6. 使用 RMI 实现方法的远程调用

    RMI 介绍 RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,能够让在某个 Java虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法.可以用此 ...

  7. 针对tomcat中startup启动服务器闪退的情况

    1.要保证你配置jdk环境变量无误:java环境变量配置详解. 2. 3.在环境变量中设置CATALINA_HOME:

  8. [TimLinux] CPU 常见架构介绍

    1. 简介 系统性能依赖硬件架构,CPU架构决定了硬件的布局.常见的CPU架构:SMP, NUMA, MPP. 2. SMP(对称多处理器) SMP:Symmetric Multiprocessing ...

  9. hdu5969最大的位或

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5969 题意:给定自然数l和r ,选取2个整数x,y,满足l <= x <= y <= r ...

  10. seaborn 数据可视化(二)带有类别属性的数据可视化

    Seaborn的分类图分为三类,将分类变量每个级别的每个观察结果显示出来,显示每个观察分布的抽象表示,以及应用统计估计显示的权重趋势和置信区间: 第一个包括函数swarmplot()和stripplo ...