① sql中如何将数字型转换为日期型
平时为了方便存储和查询,通常会选择将时间存储为毫秒或者秒的形式。但是页面显示的时候很不直观,需要将整型数字转化成日期格式,转化方式包括下面几种:
1、秒数与Date之间的转换:select from_unixtime(1388776825);
如果想逆向转换,可以通过unix_timestamp()函数反向转换。用法如下:
SELECT UNIX_TIMESTAMP() ;//获取当前时间的秒数
SELECT UNIX_TIMESTAMP('2014-03-23 10:10:40') ; //获取指定日期格式的秒数
SELECT UNIX_TIMESTAMP('2014-03-23') ; //获取指定日期格式的秒数
(1)sqlhive日期格式扩展阅读:
一、date型换int型
SELECT UNIX_TIMESTAMP(‘2017-9-22 13:54:45’)
二、int型转date型
SELECT FROM_UNIXTIME(1506059685)
需要注意的是,一个int值转换为DateTime 需要从1970年1月1日0点0分0秒开始,但是必须明确,这个时间是标准时间,而不是北京时间。
数据库中数据的时间都是以标准时间为准绳的。所以必须转换到当前时间, 中国是+8 ,可以简单的调用ToLocalTime达到效果。
② Hive 中如何实现日期格式判断
判断首先要识别,要会转换:
系统时间:from_unixtime(unix_timestamp() ,'yyyy-MM-dd HH:mm:ss') as ins_date
固定日期转换成时间戳
select unix_timestamp('2016-08-16','yyyy-MM-dd') --1471276800
select unix_timestamp('20160816','yyyyMMdd') --1471276800
select unix_timestamp('2016-08-16T10:02:41Z', "yyyy-MM-dd'T'HH:mm:ss'Z'") --1471312961
时间戳转换程固定日期
select from_unixtime(1471276800,'yyyy-MM-dd') --2016-08-16
select from_unixtime(1471276800,'yyyyMMdd') --20160816
select from_unixtime(1471312961) -- 2016-08-16 10:02:41
select from_unixtime( unix_timestamp('20160816','yyyyMMdd'),'yyyy-MM-dd') --2016-08-16
select date_format('2016-08-16','yyyyMMdd') --20160816
返回日期时间字段中的日期部分
select to_date('2016-08-16 10:03:01') --2016-08-16
返回日期中的年
select year('2016-08-16 10:03:01') --2016
返回日期中的月
select month('2016-08-16 10:03:01') --8
返回日期中的日
select day('2016-08-16 10:03:01') --16
返回日期中的时
select hour('2016-08-16 10:03:01') --10
返回日期中的分
select minute('2016-08-16 10:03:01') --3
返回日期中的秒
select second('2016-08-16 10:03:01') --1
返回日期在当前的周数
select weekofyear('2016-08-16 10:03:01') --33
返回结束日期减去开始日期的天数
select datediff('2016-08-16','2016-08-11')
返回开始日期startdate增加days天后的日期
select date_add('2016-08-16',10)
返回开始日期startdate减少days天后的日期
select date_sub('2016-08-16',10)
返回当月的第一天
select trunc('2016-08-16','MM') --2016-08-01
select trunc('2016-08-16','YEAR') --2016-01-01
③ 在sql中如何将日期类型转换成文本类型,例如2012-09-12 转变成 20120912
类型转换:convert(要转换成的数据类型,字段名称)
例如convert(varchar(100),col_name)
Convert(int,Order_no)
日期格式转换:
Select CONVERT(varchar(100), GETDATE(), 112): 20060516
Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
④ SQL语句查询特定时间段的数据怎么写
SQL服务器:
Select*fromtablewhere'2008-7-1'和'2008-12-31'
访问:
从表中选择发生日期>#2008-7-1#和发生日期<#2008-12-31#
就是这样:注意,SQLserver中的日期和访问有一点不同。
(4)sqlhive日期格式扩展阅读:
SQL查询日期语句
Select*fromShopOrderwheredatediff(week,ordTime,getdate()-1)=0//查询第一年的日期
Select*fromShopOrder,其中datediff(day,ordTime,getdate()-1)=0//查询当天的所有数据
SELECT * FROM A where datediff(d,datetime,getdate()) <=30 //前30天
SELECT * FROM A WHERE DATEDIFF(m, shijian, GETDATE()) <=1 //上个月
搜索当天记录的其他方法:
SELECT*
FROMj_GradeShop
其中(GAddTimeBETWEENCONVERT(datetime,LEFT(GETDATE(),10)+'00:00:00.000'))
并转换(datetime,LEFT(GETDATE(),10)+'00:00:00.00.000')+1)
由GAddTime指定的订单
⑤ 在Hive中,如何将string 类的 时间戳,转换成日期
from_unixtime(bigint unixtime[, string format])转换成日期格式,如果需要制定是日期可以在这个基础上套一层to_date(from_unixtime())
⑥ spark sql怎么去获取hive 表一定日期范围内的数据
select orderid,fenjian,timee
from
(
select orderid,fenjian,timee,row_number(orderid,fenjian) rn
from (
select orderid,fenjian,timee from tableName
distribute by orderid,fenjian sort by orderid,fenjian,timee asc
) t1
) t2
where t2.rn=1
⑦ Hivesql计算两个时间戳相差的分钟数
1.Hive row_number() 函数的高级用法 row_num 按照某个字段分区显示第几条数据
select imei,ts,fuel_instant,gps_longitude,gps_latitude,row_number() over (PARTITION BY imei ORDER BY ts ASC) as row_num from sample_data_2
2.row_num 是相互连续的,join 自身,然后时间相减可求差
create table obd_20140101 as
select a.imei,a.row_num,a.ts,COALESCE(unix_timestamp(a.ts, 'yyyy-MM-dd HH:mm:ss.S'), 0) - unix_timestamp(b.ts, 'yyyy-MM-dd HH:mm:ss.S') as intervel ,a.fuel_instant,a.gps_speed as obd_speed,a.gps_status,a.gps_longitude,a.gps_latitude,a.direct_angle,a.obdspeed from obddata_20140101 a join obddata_20140101 b on a.imei = b.imei and a.row_num = b.row_num +1
⑧ hvie sql日期转换成字符串 格式为YYYYMMDD 怎么写
hvie sql日期转换成字符串 格式为YYYYMMDD 怎么写?
CONVERT(数据类型,表达式,样式)
⑨ 以下哪些sql语句在hive中执行可以得到系统当前时间年月日
substring(now(),1,10)
from_unixtime(unix_timestamp,'yyyy-MM-dd')
⑩ hive sql 怎么不能这样写啊 (mysql 是没有问题的)
你可以先用hive或者手写map/rece程序。建议你直接使用hive,hive也像mysql一样可以建表。表里的数据就是对应从本地load到hadoop上的文件,格式自己定。然后用JDBC可以像操作mysql一样操作hive(sql语法稍有不同)