数据库date查询
㈠ 数据库里的Date类型数据查询不出来的问题。
data字段在返回的对象里定义为date
数据里的date字段 as 对象里定义的date字段 对应好
㈡ sql数据库里datetime类型怎么查询
用CONVERT()
函数阿。
函数语法:CONVERT(data_type(length),data_to_be_converted,style)
假设你输入的key值是yymmdd这样的格式,那么你可以这样写:
select
*
from
news
where
convert(VARCHAR(100),infotime,112)
like
'%"&
key
&"%'
order
by
id
desc
如果输入的key是其它格式,那么style要改,网上有对应表,你可以去查
㈢ 数据库的日期区间查询方法。
access中有个mid函数,可以用来截取字符串或者日期。
select * from 表名 where mid([TestTime],5,10) ='04/19/2013'其中,5代表截取的开始位置,从左数,10代表截取的长度。
数据库的日期区间查询有两种情况:
1:查询给定时间在开始时间列与结束时间列范围中数据;
2:查询日期列在开始时间列与结束时间列范围中数据。
第一种:<,>, <= , >=
select * from 表名 where 日期列 >= to_date('2015-10-20 00:00:00','yyyy-mm-dd hh24:mi:ss')
and t.日期列 <= to_date('2015-10-20 23:59:59','yyyy-mm-dd hh24:mi:ss')。
第二种 between and
select * from 表名 where 日期列 between to_date('2015-10-20 00:00:00','yyyy-mm-dd
hh24:mi:ss')and to_date('2015-10-20 23:59:59','yyyy-mm-dd hh24:mi:ss')。
(3)数据库date查询扩展阅读:
SQL数据库语句:
创建数据库:
CREATE DATABASE database-name。
删除数据库:
drop database dbname。
创建新表:
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)。
删除新表:
drop table tabname。
增加一个列:
Alter table tabname add column col type。
添加主键:
Alter table tabname add primary key(col)。
删除主键:
Alter table tabname drop primary key(col)。
创建索引:
create [unique] index idxname on tabname(col….)。
删除索引:
drop index idxname。
创建视图:
create view viewname as select statement。
删除视图:
drop view viewname。
参考资料来源:网络-sql语句大全
㈣ oracle数据库时间日期查询
TO_DATE格式(以时间:2007-11-02 13:45:25为例)
Year:
yy two digits 两位年 显示值:07
yyy three digits 三位年 显示值:007
yyyy four digits 四位年 显示值:2007
Month:
mm number 两位月 显示值:11
mon abbreviated 字符集表示 显示值:11月,若是英文版,显示nov
month spelled out 字符集表示 显示值:11月,若是英文版,显示november
Day:
dd number 当月第几天 显示值:02
ddd number 当年第几天 显示值:02
dy abbreviated 当周第几天简写 显示值:星期五,若是英文版,显示fri
day spelled out 当周第几天全写 显示值:星期五,若是英文版,显示friday
ddspth spelled out, ordinal twelfth
Hour:
hh two digits 12小时进制 显示值:01
hh24 two digits 24小时进制 显示值:13
Minute:
mi two digits 60进制 显示值:45
Second:
ss two digits 60进制 显示值:25
其它
Q digit 季度 显示值:4
WW digit 当年第几周 显示值:44
W digit 当月第几周 显示值:1
24小时格式下时间范围为: 0:00:00 - 23:59:59....
12小时格式下时间范围为: 1:00:00 - 12:59:59 ....
1. 日期和字符转换函数用法(to_date,to_char)
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from al; //日期转化为字符串
select to_char(sysdate,'yyyy') as nowYear from al; //获取时间的年
select to_char(sysdate,'mm') as nowMonth from al; //获取时间的月
select to_char(sysdate,'dd') as nowDay from al; //获取时间的日
select to_char(sysdate,'hh24') as nowHour from al; //获取时间的时
select to_char(sysdate,'mi') as nowMinute from al; //获取时间的分
select to_char(sysdate,'ss') as nowSecond from al; //获取时间的秒
select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from al//
2.
select to_char( to_date(222,'J'),'Jsp') from al
显示Two Hundred Twenty-Two
3.求某天是星期几
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from al;
星期一
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from al;
monday
设置日期语言
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
也可以这样
TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')
4. 两个日期间的天数
select floor(sysdate - to_date('20020405','yyyymmdd')) from al;
5. 时间为null的用法
select id, active_date from table1
UNION
select 1, TO_DATE(null) from al;
注意要用TO_DATE(null)
6.月份差
a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')
那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。
所以,当时间需要精确的时候,觉得to_char还是必要的
7. 日期格式冲突问题
输入的格式要看你安装的ORACLE字符集的类型, 比如: US7ASCII, date格式的类型就是: '01-Jan-01'
alter system set NLS_DATE_LANGUAGE = American
alter session set NLS_DATE_LANGUAGE = American
或者在to_date中写
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from al;
注意我这只是举了NLS_DATE_LANGUAGE,当然还有很多,
可查看
select * from nls_session_parameters
select * from V$NLS_PARAMETERS
8.
select count(*)
from ( select rownum-1 rnum
from all_objects
where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002-
02-01','yyyy-mm-dd')+1
)
where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D' )
not in ( '1', '7' )
查找2002-02-28至2002-02-01间除星期一和七的天数
在前后分别调用DBMS_UTILITY.GET_TIME, 让后将结果相减(得到的是1/100秒, 而不是毫秒).
9. 查找月份
select months_between(to_date('01-31-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;
1
select months_between(to_date('02-01-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;
1.03225806451613
10. Next_day的用法
Next_day(date, day)
Monday-Sunday, for format code DAY
Mon-Sun, for format code DY
1-7, for format code D
11
select to_char(sysdate,'hh:mi:ss') TIME from all_objects
注意:第一条记录的TIME 与最后一行是一样的
可以建立一个函数来处理这个问题
create or replace function sys_date return date is
begin
return sysdate;
end;
select to_char(sys_date,'hh:mi:ss') from all_objects;
12.获得小时数
extract()找出日期或间隔值的字段值
SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 2:38:40') from offer
SQL> select sysdate ,to_char(sysdate,'hh') from al;
SYSDATE TO_CHAR(SYSDATE,'HH')
-------------------- ---------------------
2003-10-13 19:35:21 07
SQL> select sysdate ,to_char(sysdate,'hh24') from al;
SYSDATE TO_CHAR(SYSDATE,'HH24')
-------------------- -----------------------
2003-10-13 19:35:21 19
13.年月日的处理
select older_date,
newer_date,
years,
months,
abs(
trunc(
newer_date-
add_months( older_date,years*12+months )
)
) days
from ( select
trunc(months_between( newer_date, older_date )/12) YEARS,
mod(trunc(months_between( newer_date, older_date )),12 ) MONTHS,
newer_date,
older_date
from (
select hiredate older_date, add_months(hiredate,rownum)+rownum newer_date
from emp
)
)
14.处理月份天数不定的办法
select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),last_day(sysdate) from al
16.找出今年的天数
select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from al
闰年的处理方法
to_char( last_day( to_date('02' | | :year,'mmyyyy') ), 'dd' )
如果是28就不是闰年
㈤ 在数据库中如何查询当天的数据
查询当天的数据的方法是:
select *
from tabname
where trunc(dtcol) = trunc(sysdate)
或者:
select *
from tabname
where dtcol >= trunc(sysdate) and dtcol < trunc(sysdate) + 1
㈥ 根据数据库里Date类型的字段查询
select * from shop where date = convert(Datetime,‘2015/7/27’)
㈦ oracle数据库 date时间类型查询昨天、前7天、前30天、前1年的数据,sql语句怎么写
1、打开plsql,连接上oracle数据库,使用sql语句创建一张测试表。
㈧ 求助:SQL操作orcal数据库 根据date时间查询数据
str = " select AA,BB,CC from DATA01 where ID='00123'
and to_char(LOCATETIME,'yyyy-mm-dd hh24:mi:ss')>=' "+StartTime+" '
and to_char(LOCATETIME,'yyyy-mm-dd hh24:mi:ss')<=' "+EndTime " ' ";
字符类型的值要用 单引号 括起来
㈨ oracle中,有一个test表,表中有一date类型的date字段,如何根据条件查询date数据啊
以下每一句效果都一样:
1、Select * from a where date between to_date('2018-1-1', 'yyyy-mm-dd') and to_date('2018-8-1','yyyy-mm-dd')
2、Select * from a where date between to_date('2018/1/1', 'yyyy/mm/dd') and to_date('2018/8/1','yyyy/mm/dd')
3、Select * from a where date between to_date('2018-1-1', 'yyyy/mm/dd') and to_date('2018/8/1','yyyy-mm-dd')
(9)数据库date查询扩展阅读
数据库中Date与DateTime的区别
Date:代表xxxx年xx月xx日 只表示前面的日期,是SQL Server 2008新引进的数据类型。它表示一个日子,不包含时间部分,可以表示的日期范围从公元元年1月1日到9999年12月31日,只需要3个字节的存储空间。
DateTime:代表xxxx年xx月xx日xx时xx分xx秒 精确到时分秒,用于做时间戳,日期和时间部分,可以表示的日期范围从公元1753年1月1日00:00:00.000 到9999年12月31日23:59:59.997 ,精确到3.33毫秒,它需要8个字节的存储空间。
㈩ sql server 数据库里的date字段日期格式是2009-12-3 17:36:26,怎样通过sql语句查询出当天的记录
120 或者 20 yyyy-mm-dd hh:mi:ss(24h) 是这样的,
where convert(varchar(10), date, 120) = '2010-10-15'这样是错误的。找不出记录的如果date是datetime类型
style值参考如下:
Style ID Style 格式
100 或者 0 mon dd yyyy hh:miAM (或者 PM)
101 mm/dd/yy
102 yy.mm.dd
103 dd/mm/yy
104 dd.mm.yy
105 dd-mm-yy
106 dd mon yy
107 Mon dd, yy
108 hh:mm:ss
109 或者 9 mon dd yyyy hh:mi:ss:mmmAM(或者 PM)
110 mm-dd-yy
111 yy/mm/dd
112 yymmdd
113 或者 13 dd mon yyyy hh:mm:ss:mmm(24h)
114 hh:mi:ss:mmm(24h)
120 或者 20 yyyy-mm-dd hh:mi:ss(24h)
121 或者 21 yyyy-mm-dd hh:mi:ss.mmm(24h)
126 yyyy-mm-ddThh:mm:ss.mmm(没有空格)
130 dd mon yyyy hh:mi:ss:mmmAM
131 dd/mm/yy hh:mi:ss:mmmAM