hive中字符串类型的日期为什么能够进行比较?
 where import_date_day >= '2018-06-08'  
     and import_date_day <= '2018-06-14' 

例如上面的这种,我的字段date_day是string类型的,只不过里面内容写的是2018-06-08这种格式,为什么在sql中居然能按时间长短进行比较
这个不是我写的,我测试的时候发现真的能,8号之前的为false,之后为true,这么神奇么?

1

5个回答

如果你的字段‘import_date_day’是string类型,那么比较应该是按照string比的,但是该字段的format可以支持类似于日期的比较,因为年在前,月在当中,日在最后。这样按照字符串比较的规则,从前往后,第一个不同的字符即决定两个字符串的大小。所以年份小的,一定小,年份相同月份小的,一定小,年月都相同,日期小的一定小。

如果你的字段是timestamp类型,则字符串会自动转换成timestamp比较。

0

这个是sql自带的,本来就可以进行字符串来比较大小 。但是还是推荐你用严谨的sql函数去转换时间然后在比较。

3

其实SQL本来就是可以对字符串继续大小比较,比如字符型的2018跟字符型的2017比较,就是2018大。比较是没问题,但是如果是做算法就会有问题,做日期算法就一定要用回DATE类型,不然出来的数都是不对的。

0

SQL本来就可以对字符串大小进行比较

0

SQL本来就可以对字符串大小进行比较

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
hive中字符串类型的日期
问题: hive 时间字段一般定义为string类型 (例如dt) 当我们比较事习惯写成 dt&amp;gt; ‘2018-12-27’ 也能找到 相应的内容 今天细想了一下 原来是string 的比较大小也能实现 装换成时间后再比较的效果 (以前都是用,突然想明白记录下自己以前不好行为) 原理:字段‘dt’是string类型,那么比较应该是按照string比的,但是该字段的format可以支持类似于日...
实战 - Hive 日期时间运算与比较
日期比较:2个时间的比较,返回2个时间相差的天数。--函数: datediff(string end_date,string start_date); select datediff("2017-06-16 15:00:01","2017-06-15 15:01:01"); --输出: 1 select datediff("2017-06-16 15:00:01","2017-06-18 16:
Hive常用函数大全(一)(关系/数学/逻辑/数值/日期/条件/字符串/集合统计/复杂类型)
关系运算## > < = ##注意: String 的比较要注意(常用的时间比较可以先 to_date 之后再比较) select long_time>short_time, long_time<short_time,long_time=short_time, to_date(long_time)=to_date(short_time) from ( select '2017-01-11
Hive timestamp与date互转的实验
将date存成timestamp有个比较好的好处,是比较的效率肯定会高很多,而且也是目前HIVE能够支持的方式。 幸好HIVE当中支持了对timestamp与DATETIME的时间转化操作,主要由两个函数组成: from_unixtime:将一个timestamp值转化为datetime的字符类型。 unix_timestamp: 将datetime的字符类型转化为timesta
oracle中比较把日期转换成字符串比较
"TO_CHAR"(字段名,'YYYY-MM-DD')=‘2017-11-27’
日期字符串之间的比较
字符串比较 1 2 3 4 5 6 7 8 //字符串比较 NSString *string = @"hello nihao"; NSString *otherString = @"hello niyeyao"; if([string compare:otherString] == NSOr
Hive时间是String格式截取字串和转换数据类型小贴士
导入hive的时间格式是:2016/8/23 00:00:00 无法直接to_date,只能截取具体子串substr在转换类型到int比较大小。 select count(*) from tmp_fjs_dba where substr(f4,1,9)='2016/8/23' and f28 like 'update%' and int(substr(f4,11,2))>12;
String类型的日期判断大小
DateFormat dateFormat = new SimpleDateFormat(&quot;yyyy-MM-dd&quot;); 将日期转换为年月日形式 dateFormat.parse(“yyyy-mm-dd”).getTime()//这里的yyyy-mm-dd是需要填写实际时间 通过上面的转换可以比较时间...
Hive(十)--数据类型转换、字符串函数、条件判断
数据类型转换 同Java语言一样,Hive也包括 隐式转换(implicit conversions)和显式转换(explicitly conversions)。   Hive在需要的时候将会对numeric类型的数据进行隐式转换。比如我们对两个不同数据类型的数字进行比较,假如一个数据类型是INT型,另一个 是SMALLINT类型,那么SMALLINT类型的数据将会被隐式转换地转换为I
比较两个String类型日期大小
String beginTime = "2017-07-01"; DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); if(dateFormat.parse(beginTime).getTime() < dateFormat.parse("2015-07-01").getTime(){ ......
mysql中的date类型直接比较大小是按照字符串比较还是时间戳
mysql中的时间比如date类型的字段如果比较大小的话是按照字符串比较还是按照时间戳比较呢? Mysql在比较两种不同数据类型时,第一步是将他们转化为同一种类型,然后在比较。那么Date和String在比较的时候,一定是把String转化为Date吗?答案是Yes. http://dev.mysql.com/doc/refman/5.0/en/type-conversion.html
Postgresql、HiveQL时间日期比较及加减写法
一、postgreSQL ----当前时间 now()   &amp;gt;&amp;gt;2018-09-14 16:46:51.103709+08 current_timestamp   &amp;gt;&amp;gt;2018-09-14 16:47:58.547305+08----当前日期 current_date     &amp;gt;&amp;gt;2018-09-14 ----小于某个固定时间 create_time &amp;lt...
mysql中如何操作varchar类型的日期进行比较、排序等操作
在mysql使用过程中,日期一般都是以datetime、timestamp等格式进行存储的,但有时会因为特殊的需求或历史原因,日期的存储格式是varchar,那么我们该如何处理这个varchar格式的日期数据呢? 使用函数:STR_TO_DATE(str, format) STR_TO_DATE(str, format)函数是DATE_FORMAT()函数的反函数。它需要一个字符串str和一个...
Oracle的字符串和日期的比较
当Oracle中有日期字符串和日期经行比较的时候, 最好把字符串转换为日期, 如:TO_DATE(T1.BUILD_DATE,'YYYY-MM-DD')
Hive 中各种字符串转换成日期格式
Please refer below table to convert any date format into fixed format i.e yyyy-MM-dd . Input column name: dt (String).Replace dt with your column name. Input Format Code Output Format ddMMyy...
java 比较两个日期大小日期类型和字符类型
/** * 比较两个日期之间的大小 * * @param d1 * @param d2 * @return 前者大于后者返回true 反之false */ public static boolean compareDate(Date d1, Date d2) { Calendar c1 = Calendar.getInstance(); Calendar c2 = C...
mongodb中字符串日期的比较
mongodb中字符串日期的比较
hive中两种日期格式的转换
在解析埋点数据时会遇到两种不同的日期格式:yyyymmdd和yyyy-mm-dd,此类型之间的转换主要有两种思路: 第一种方法:from_unixtime+unix_timestamp --20180905转成2018-09-05 select from_unixtime(unix_timestamp('20180905','yyyymmdd'),'yyyy-mm-dd') from dw....
日期为String格式,对日期进行比较
日期格式为String类型,要对开始日期,结束日期进行限制.开始日期不能大于结束日期 SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date end = sd.parse(endTime); Date start = sd.parse(startTime); if(start.compareTo(end)&gt...
字符串类型的日期如何比较大小
 sql server中字符串类型的日期如何比较大小    如果在数据库(sql)中将保存日期的字段的数据类型设置为varchar,而你又需要对这个日期和另外一个日期进行比较,那么该怎么办呢?第一种方法很容易想到,就是纯粹地利用字符串来比较大小,比如有一个字段为adddate,其数据类型为varchar,要比较这个日期是不是大于某个日期,比如&quot;2006-12-23&quot;,那么可以直接写:whe...
hive中bigint和varchar字段做关联,关联数据错误的解决方法
把bigint和varchar都隐式转换成String类型的就可以关联出正确的结果了 cast(t1.PARTY_NUM as string)=cast(t12.customerId as string)
yyyy-MM-dd类型的日期字符串比较大小
在编程过程中,经常会遇到日期字符串的排序,日期常见格式是yyyy-MM-dd类型,实现了两个日期之间的比较,就可以采用常规排序算法进行排序。 比如,我们要比较2016-09-22和2016-07-17的大小,思路很简单,将日期分割成年月日的字符串数组,第一步比较年份,如果年份可以得出大小就结束比较,否则,继续比较月份,依次内推,下面是代码: private int compar
hive sql中比较时间大小
YY-MM-DD HH-MM-SS 格式时间 和HH-MM-SS时间做大小对比时,HH-MM-SS 的日期会默认是 1900-00-00的最小日期 需要注意 例子 23:59:59
mysql数据库中日期String转成datetime类型作比较
当我们像mysql插入数据大于1M的时候,会出现以下错误提示: Packet for query is too large (1334541&amp;amp;amp;amp;amp;amp;gt; 1048576). You can change this value on the server by 解决办法:查询系统参数max_allowed_packet,将该参数做相应调整。 查询命令:SHOW VARIABLES LIKE ‘%m...
js字符串转为日期比较大小
demo1:dd-MM-yyyy类型的日期大小比较1: &amp;lt;script&amp;gt; function dateCompare(strDate1,strDate2){ var date1 = stringToDate(strDate1); var date2 = stringToDate(strDate2); var result = Date.parse(date1) - D...
String 类型 日期时间大小的比较
public static int compare_date(String DATE1, String DATE2) {                           DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");         try {             Date dt1 = df.parse(DATE
Java 字符串型的日期对比大小
/** * @description: 两个String类型,按照日期格式对比 * eg: * dateOne:2015-12-26 * dateTwo:2015-12-26 * dateFormatType: yyyy-MM-dd * 返回类型:-1:dateOne小于dateTwo, 0:dateOne=d...
Hive/Impala 日期计算与比较
一、比较函数datediff  select datediff(&quot;2018-01-05&quot;,&quot;2018-01-02&quot;)  from 表   //返回值是3 select datediff(&quot;2018-01-05&quot;,&quot;2018-01-08&quot;)  from 表   //返回值是-3 hive&amp;gt; select datediff(&quot;2018-01-05&quot;,&quot;2018-01-02&quot
C#中如何比较2个string类型的日期大小?
string BeginTime;string EndTime;要判断开始时间是否小于结束时间,在C#中直接判断的话,语句如下:if(DateTime.Parse(BeginTime)>DateTime.Parse(EndTime))
max函数比较字符串类型
关于sql中 max函数比较字符串类型 max只比较首个字符的大小 只要首字母大,则不比较其他位置的字母,若首字母相同,则比较顺序位字母。 今天死在这了 数据库中 step字段类型char分别为 5、6、7、8、9、10 select max(step) from table 结果是:9 郁闷了一晚上才发现,哎 不过sum函数是按数字累加的 select sum(step) fro
mapper.xml的日期不能跟字符串比较,否则会报错,
1.异常:Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String  2,原代码:if test="createdDate!=null and createdDate!=''">  CREATED_DATE descif>改成:if test="crea
hive 时间相减
select      case when  "2017-01-18 23:59:56" > substr("2017-01-18 23:59:55.511" ,1,19)             then  unix_timestamp("2017-01-19 00:00:00")  - unix_timestamp(substr("2017-01-18 23:59:55.511" ,1,1
hive 中时间戳与时间字符串的相互转换
时间戳是数据库常用的存放日期的形式之一,表示从 UTC 时间’1970-01-01 00:00:00’开始到现在的秒数,与常规时间格式如 ‘2018-01-01 00:00:00’可以相互转换,方法如下。 一、unix_timestamp 函数用法 1、unix_timestamp() 返回当前时间戳。另外,current_timestamp() 也有同样作用。 hive&amp;gt; selec...
ElasticSearch中的日期映射为Hive中的日期格式
现在的场景是需要将ElasticSearch中的数据导入到Hive中,但是在导入的时候发现了日期映射的异常,ElasticSearch中日期字段定义的格式为: &quot;time&quot; : { &quot;type&quot; : &quot;date&quot;, &quot;store&quot; : true, &quot;include_in_all&quot; : true, ...
hive 基于日期(Date)进行分区的最佳实践
一、概述 hive表进行分区操作对于读写等操作来说意义重大。最常见的分区类型即通过日期时间,例如年-月-日进行分区。根据日期时间字段进行分区有两种常见的方式: 1.一级分区 2.多级分区(分区嵌套) 所谓的一级分区,故名思义则是将年-月-日看作一个整体。比如说日期2018-12-25,分区字段为date,那么最终的partition则为’date=2018-12-25’。 而多级分区,则是将年...
Java之~判断两个String类型的日期大小
一,String类型时间比较 DateFormat sdf = new SimpleDateFormat(&quot;yyyy-MM-dd HH:mm:ss&quot;);   Date date = new Date();  String nowtime = sdf.format(date);//当前时间 String  endtime= &quot;2016-11-23&quot;;   //到期时间 try {       ...
Hive日期格式转换用法
1.日期函数UNIX时间戳转日期函数: from_unixtime语法:from_unixtime(bigint unixtime[, stringformat])  返回值: string 说明: 转化UNIX时间戳(从1970-01-0100:00:00 UTC到指定时间的秒数)到当前时区的时间格式 举例: hive> select from_unixtime(1323308943,'
mysql中String类型日期比较
    1、数据库中字段createtime类型为String,格式为:06-08-2018 10:50:24;     2、以createtime做条件做时间范围内的查询操作:    将String转为date: &amp;lt;if test=&quot;start != null&quot;&amp;gt; and STR_TO_DATE(p.createtime,'%d-%m-%Y %H:%i:%s') &amp;a...
Linux Shell日期比较,数值比较和字符串比较及相关
Linux Shell日期比较,数值比较和字符串比较及相关 说明: 1. 把字符串当成整型进行比较,由于abcd等字符对不上0123当程序尝试去转成二进制时无法完成转换,所以用于数值比较的运算不能用于字符串比较;但是把整型当成字符串进行比较,0123这些数值完全可以转成ASCII码而且原本两个整型相等则变成ASCII码还是相等、不等的还是不等,所以可用于字符串的比较也可用于整型的比较。 2....
hive中日期与时间戳转换
从1970-01-01 00:00:00 UTC到指定时间的秒数。 总结:时间戳到日期时间,日期时间到时间戳,日期时间到日期。 获取时间戳:select distinct unix_timestamp() from test_date; 时间戳>>>>日期:select distinct  from_unixtime(1441565203,'yyyy/MM/dd HH:mm:
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 如何能够高效学习java 学习大数据能够应聘的岗位