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:
mysql中如何操作varchar类型的日期进行比较、排序等操作
在mysql使用过程中,日期一般都是以datetime、timestamp等格式进行存储的,但有时会因为特殊的需求或历史原因,日期的存储格式是varchar,那么我们该如何处理这个varchar格式的日期数据呢? 使用函数:STR_TO_DATE(str, format) STR_TO_DATE(str, format)函数是DATE_FORMAT()函数的反函数。它需要一个字符串str和一个...
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或Date等原生类型的优劣势对比
数据库中常用的日期类型:日期类型存储空间日期格式日期范围date3 bytesYYYY-MM-DD1000-01-01 ~ 9999-12-31datetime8 bytesYYYY-MM-DD HH:MM:SS1000-01-01 00:00:00 ~ 9999-12-31 23:59:59timestamp4 bytes YYYY-MM-DD HH:MM:SS1970-01-01 00:00:...
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...
关于mybites中处理比较日期字符串的写法
第一种 这种方法传入的 参数应该是个时间戳带格式的 and TO_CHAR(列名, ‘YYYY-MM-DD’) &amp;amp;gt;= TO_CHAR(#{leaveBeginDate,jdbcType=TIMESTAMP},’YYYY-MM-DD’) ...
Hive timestamp与date互转的实验
将date存成timestamp有个比较好的好处,是比较的效率肯定会高很多,而且也是目前HIVE能够支持的方式。 幸好HIVE当中支持了对timestamp与DATETIME的时间转化操作,主要由两个函数组成: from_unixtime:将一个timestamp值转化为datetime的字符类型。 unix_timestamp: 将datetime的字符类型转化为timesta
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
日期为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...
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...
字符串格式的日期比较大小
oracle中如果数据库中存储的日期市字符串格式的,在进行比较时候需要进行转换 如设计表 SELECT * FROM dw_studio_success_stat t1  WHERE to_date(t1.achievement_time, 'yyyy-mm-dd')&amp;gt;to_date('2017-08-15', 'yyyy-mm-dd') 如果是前端传入参数进行比较则 ...
hive 科学计数法类型的字符串转换为时间
select from_unixtime(cast((cast(action_time as decimal(13,0)))/1000 as int))
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
String类型的日期判断大小
DateFormat dateFormat = new SimpleDateFormat(&quot;yyyy-MM-dd&quot;); 将日期转换为年月日形式 dateFormat.parse(“yyyy-mm-dd”).getTime()//这里的yyyy-mm-dd是需要填写实际时间 通过上面的转换可以比较时间...
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
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
mysql中的date类型直接比较大小是按照字符串比较还是时间戳
mysql中的时间比如date类型的字段如果比较大小的话是按照字符串比较还是按照时间戳比较呢? Mysql在比较两种不同数据类型时,第一步是将他们转化为同一种类型,然后在比较。那么Date和String在比较的时候,一定是把String转化为Date吗?答案是Yes. http://dev.mysql.com/doc/refman/5.0/en/type-conversion.html
sql server中字符串类型的日期如何比较大小
背景              最近在维护NCRE教师端,发现一个问题:数据库中的日期是字符串格式的,可是为什么字符串类型的数据也可以比较大小呢?以下是两种比较方式: 一、用字符串比较      这个方法很容易想到,就是纯粹地利用字符串来比较大小,比如有一个字段为adddate,其数据类型为varchar,要比较这个日期是不是大于某个日期,比如”2016-2-22”,那么可以直接写:where a
oracle中比较把日期转换成字符串比较
"TO_CHAR"(字段名,'YYYY-MM-DD')=‘2017-11-27’
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...
hive中bigint和varchar字段做关联,关联数据错误的解决方法
把bigint和varchar都隐式转换成String类型的就可以关联出正确的结果了 cast(t1.PARTY_NUM as string)=cast(t12.customerId as string)
mysql字符串类型时间比较大小
日常随笔: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这里记录一个最近遇到的mysql字符串类型时间的问题 数据结构: |year(int)| month(int)| |2016 | 7 | |2016 |10| 使用CONCAT_WS拼接时间为yyyy-m格式,返回的是字符串类型 注:经测试字符串时间yyyy-m与yyyy-m单独比较,可以得到正确...
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...
java 比较两个日期大小日期类型和字符类型
/** * 比较两个日期之间的大小 * * @param d1 * @param d2 * @return 前者大于后者返回true 反之false */ public static boolean compareDate(Date d1, Date d2) { Calendar c1 = Calendar.getInstance(); Calendar c2 = C...
mysql数据库日期是varchar类型的时间比较查询
分享个人工智能教程,零基础入门!http://www.captainbed.net/inner 单纯的字符串比较结果不精确.【1】select*fromtableName wheretimes&gt;'2088/12/8 10:02:40';(×) 转换函数如下(数据库为varchar): select*fromh_hotelcontextwherenow()bet...
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...
mongodb中字符串日期的比较
mongodb中字符串日期的比较
比较两个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比较大小
如下 &amp;lt;if test=&quot;starttime != null and starttime != ''&quot;&amp;gt; AND STR_TO_DATE(a.create_time,'%Y-%m-%d') &amp;gt;= #{starttime} &amp;lt;/if&amp;gt; &amp;lt;if test=&quot;endtime != null and endtime != ''&quot;&amp;gt; ...
Java 字符串型的日期对比大小
/** * @description: 两个String类型,按照日期格式对比 * eg: * dateOne:2015-12-26 * dateTwo:2015-12-26 * dateFormatType: yyyy-MM-dd * 返回类型:-1:dateOne小于dateTwo, 0:dateOne=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
orcal 数据库 字符串时间与数据库时间进行比较
1. SUBSTR方法 SELECT * FROM IMS_COMPANY_PROJECT WHERE  SUBSTR(START_TIME,0, 4)&amp;gt;=&quot;                  + projectEndTimeCycleStartYear + &quot; AND SUBSTR(START_TIME,0, 4)&amp;lt;=&quot; + projectEndTimeCycleEndYear  ...
java后端比较字符串类型日期大小
https://blog.csdn.net/u013991521/article/details/60471545  java中比较两个日期的大小(亲测有用)   Java比较两个时间大小方法记录 https://blog.csdn.net/m0_37890289/article/details/79567174() https://blog.csdn.net/qq_39706570/art...
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....
JavaScript比较两个日期时间格式字符串的大小
从网上找的比较两个日期时间格式字符串的大小的js代码,根据自己项目需要改了下,保存下来,以后方便使用 原文章写的更详细:https://www.jb51.net/article/45560.htm 感谢作者~ 使用下面代码前必须确保传入的参数格式为:yyyy-MM-dd HH:mm:ss 下面是判断字符串是否为上述日期格式的正则表达式 var reg = /^[1-9]\d{3}...
jquery实现日期的比较
 /* $(".dateSure").click(function() {          tmpDate = new Date();   date = tmpDate.getDate();   month = tmpDate.getMonth() + 1;   year = tmpDate.getYear()+1900;   var time2 = year + "-"+"
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 {       ...
mysql中把bigint类型转换为时间格式,与hive中unix_timestamp、FROM_UNIXTIME两个函数之间的区别
数据库中时间类型是这样的,13位bigInt类型的数据 select date_format(FROM_UNIXTIME(列名/1000),'%Y%m%d') from xx表 原理就是把13位的时间格式/1000等于时间戳,使用FROM_UNIXTIME把时间戳转换成具体的日期 ps: 将时间转换为时间戳 select unix_timestamp('2018-08-30...