sql语句中日期时间类型怎么比较
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql语句中日期时间类型怎么比较相关的知识,希望对你有一定的参考价值。
一.存储日期的字段为日期类型mysql(Date、DateTime、TimeStamp等):
方法一:直接比较
select * from test where create_time between ‘2015-03-03 17:39:05’ and ‘2016-03-03 17:39:52’;
方法二:用unix_timestamp函数,将字符型的时间,转成unix时间戳
select * from test where unix_timestamp(create_time) >
unix_timestamp(‘2011-03-03 17:39:05’) and unix_timestamp(create_time)
< unix_timestamp(‘2011-03-03 17:39:52’);
个人觉得这样比较更踏实点儿。
Oracle(Date,TimeStamp等):
方法一:将字符串转换为日期类型
select * from test where create_time between to_date(‘2015-03-03 17:39:05’) and to_date(‘2016-03-03 17:39:52’);
二.存储日期类型的字段为数值类型
MySql(bigint):
方法一:将日期字符串转换为时间戳
select * from test where create_time > unix_timestamp(‘2011-03-03
17:39:05’) and create_time< unix_timestamp(‘2011-03-03 17:39:52’);
方法二:将时间戳转换为日期类型
select * from test where from_unixtime(create_time/1000) between ‘2014-03-03 17:39:05’ and ‘2015-03-03 17:39:52’); 参考技术A 正常比较日期前后就好了,假设表名叫Table,有个字段叫CreateDate是日期类型的,如下:
select *
from Table
where CreatedDate>=CAST(DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)AS datetime) 参考技术B oracle:
select * from table1 where date>to_date('2009-8-12 13:17:50','yyyy-mm-dd')
db2:
select * from table1 where date>date('2009-8-12 13:17:50','yyyy-mm-dd')本回答被提问者和网友采纳
SQL中两个日期的查询语句怎么写?
日期的查询语句?between...and...忘记具体怎么写了?
1、创建测试表,
create table test_date(id int, v_date date);
2、插入测试数据
insert into test_date values (1, STR_TO_DATE('2016-01-02', '%Y-%m-%d'));
insert into test_date values (2, STR_TO_DATE('2019-01-02', '%Y-%m-%d'));
insert into test_date values (3, STR_TO_DATE('2019-11-02', '%Y-%m-%d'));
insert into test_date values (4, STR_TO_DATE('2019-11-14', '%Y-%m-%d'));
3、查询原始表的记录,select t.* from test_date t,
4、编写sql,限定两个日期,查询记录,
select * from test_date t where DATE_FORMAT(v_date, '%Y-%m-%d') in ('2016-01-02','2019-11-02'),
参考技术A 这个要区分数据库的。如果是informix、mysql、sybase可以直接以字符串形式查询,如果是oracle那就需要加to_date函数。不用写什么between and ,直接写大于小于号即可。
写字符串的时候注意标准格式:2012-04-20 10:00:00 或者2012/04/20 10:00:00 参考技术B 你是条件带两个日期,还是想提取两个日期字段?
SELECT rq1,rq2 from table_name
where To_Char(rq1, 'yyyy-mm-dd') BETWEEN '2012-04-01' AND '2012-04-01' ;追问
就是一个表中有起始日期和结束日期两列字段,想通过日期查询语句查出某某日期的记录。。。
追答select * from r_lht_404
where TO_DATE('24-02-2009 00:00:00','DD-MM-YYYY HH24:MI:SS') between dt_begin and dt_end;
谢谢。。。
追答不用谢。
本回答被提问者和网友采纳 参考技术C 查询当前系统时间为select sysdate from dual;查询两个日期之间的月数(date1-date2)用months_between(date1,date2)单值函数。例如:
select months_between(hiredate,sysdate) from emp; 参考技术D 你想表达什么意思?
以上是关于sql语句中日期时间类型怎么比较的主要内容,如果未能解决你的问题,请参考以下文章