Sql字符串与时间比较问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sql字符串与时间比较问题相关的知识,希望对你有一定的参考价值。

我有一个datetime字段,一个varchar(10)字段,datetime存放的是日期,如2014-11-11 00:00:00.000,
varchar(10)字段存放的是时间,如12:50,我想查询出比当前时间晚两个小时的数据,也就是说大于2014-11-11 12:50:00.000 的数据,应该怎么写SQL语句

oracle比较字符串是根据ascii码来的,第一个字母的ascii大小比较如果相等再比较下一个,类推。
字符串和数字进行操作是会报异常的,因为类型不一样不能进行比较。
oracle在执行sql的时候有些时候会自动转换,比如:
select
*
from
chan_customer
cc
where
cc.customer_id
=
'1';
即使customer_id是数字型的也可以查出来,但是oracle有区分字符和数字
就是通过加不加单引号来区分。
参考技术A 如果你的 时间段是分开存的 比如 小时存12 分钟存 50 我就有办法

你就可以通过 dateadd(Hour,12,dateadd(minute,50,datetime)) 来获取2014-11-11 12:50:00.000这个时间 那个12 和 50 你可以替换成 分开存的 小时 字段 与分钟字段本回答被提问者采纳

sql中比较一个字符串中是不是含有另一个字符串中的一个字符

str1='1`2`3`4`5'str2='1`2`3`4'比较str1与str2在str1中有'1234'其中任何一个就满足条件,当然具体数据不会如此规则,间隔符也不确定。要在SQL语句中实现。

sql中比较一个字符串中是否含有另一个字符或字符串可用charindex函数。

如:

select charindex(\'爱\',\'我爱祖国\')

结果为:

返回值2为“爱”在“我爱祖国”中的位置。

如:

select charindex(\'a\',\'我爱祖国\')

结果为:

返回值为0,则代表“a”不存在于“我爱祖国”字符串中。



语法:

CHARINDEX ( expression1 , expression2 , [ start_location ] )

参数:

expression1

一个表达式,其中包含要寻找的字符的次序。expression1 是一个短字符数据类型分类的表达式。

expression2

一个表达式,通常是一个用于搜索指定序列的列。expression2 属于字符串数据类型分类。

start_location

在 expression2 中搜索 expression1 时的起始字符位置。如果没有给定 start_location,而是一个负数或零,则将从 expression2 的起始位置开始搜索。

参考技术A 1、既然你要判断其中一个是否包含了另一个,那你条件肯定要给SQL,SQL才能帮你找到的,2、这个条件肯定是你要给出的。比如str1='1`2`3`4`5'str2='1`2`3`4'那你叫SQL判断的其中的话,可以:Select CharIndex('5',str1) --这里的“5”具体要代入什么值去判断,就要你给出来了。Select CharIndex('2`3',str1) --这类的SQL是可以帮你去判断的。不包含的话就返回0否则就返回第一个相同字符的位置,比如这个就返回3

以上是关于Sql字符串与时间比较问题的主要内容,如果未能解决你的问题,请参考以下文章

用于比较字符串(HH24MI)与日期的 Sql 查询帮助

sql存储过程中时分秒字符串怎么比较大小 如08:30:00 与13:00:00怎么比较

ms sql server字符串与另一个具有多个值的字符串进行比较

T-SQL JSON:JSON_QUERY 在将对象与字符串进行比较后返回 json 字符串

如何将 SQL 比较条件 ANY/SOME 与 DATATYPE Char 一起使用

sql中比较一个字符串中是不是含有另一个字符串中的一个字符