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语句中日期时间类型怎么比较的主要内容,如果未能解决你的问题,请参考以下文章

sql语句中怎样比较两个日期的大小???

sql语句时间类型怎么表示10天前?

JAVA语句怎么把日期(类型为DATA)中的月份提取出来

Linq中,怎么写日期类型字段的Where条件语句

Oracle两个日期类型字段怎么比较大小

Oracle两个日期类型字段怎么比较大小