⑴ 数据库时间类型字段,怎么直接用数字查询
不需要设置,数据库里头存放的日期即使是 2019-01-02这种格式,查询的时候直接写条件20190102也可以。
⑵ java查询数据库按年月日
可以用数据库的自带函数查询出来,前提,数据库中这个字段类型必须是date类型的。
--查询年份
select * from XXX where year(date)=2013; //XXX是表名,year(date)是函数,用来查询date类型的中的年份。
--查询月份
select * from XXX where month(date)=12; //XXX是表名,month(date)是函数,用来查询date类型的中的月份。
--查询年月日的,就可以直接写了
select * from XXX where date='2013-12-1‘; //查询出2013年12月1日的数据
⑶ sql查询日期的年份
要返回正确的记录,你需要适用日期和时间范围。有不止一种途径可以做到这一点。例如,下面的这个SELECT 语句将能返回正确的记录: SELECT * FROM weblog WHERE entrydate>=”12/25/2000” AND entrydate<”12/26/2000” 这个语句可以完成任务,因为它选取的是表中的日期和时间大于等于12/25/2000 12:00:00:000AM并小于12/26/2000 12:00:00:000AM的记录。换句话说,它将正确地返回2000年圣诞节这一天输入的每一条记录。 另一种方法是,你可以使用LIKE来返回正确的记录。通过在日期表达式中包含通配符“%”,你可以匹配一个特定日期的所有时间。这里有一个例子: SELECT * FROM weblog WHERE entrydate LIKE ‘Dec 25 2000%’ 这个语句可以匹配正确的记录。因为通配符“%”代表了任何时间。
⑷ 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就不是闰年
⑸ sql数据库中怎么以时间字段中的年部分用来作为数据的不同年份筛选
select distinct,temp=year(ZhuceTime) from SchoolMaster where SchoolId=1;
使用的时候,temp就是个临时年份的字段
⑹ 怎么在数据库年的时间字段里,查询出月属性,比如说,我就要查询某一月的数据,怎么写查询语句
--本月记录
SELECT * FROM 表 WHERE datediff(month, 日期字段A,getdate())=0
⑺ ASP查询数据库日期中的年份该怎么查寻
两种比较简单的方法可以实现
例如: datestr 是你从数据库里查出来的日期
第一种方法: response.write(year(datestr)) ,这样输出的就是日期中的年份
第二种方法: 换个思路去考虑,有意义的年份都应该是四位数的,所以可以用截取字符串的方式去完成, response.write(left(datestr,4)) ,这样也成
希望可以帮助到你
⑻ 数据库按年份查询怎么设置条件
用year()提取日期中的年份
比year(date())就是今年,year([出生日期])就是出生年份。
⑼ 在MySql中、怎样根据年份或者月份查询数据表中的数据
下面以比较流行的mysql图形化管理工具Navicat为例,其他工具或者在命令行中以及编程语言中操作时的执行的sql语句是一样的。
1、假设在数据库中有一个名为testtest的表格,表格内容如下图所示,表中有三条记录是9月份的
⑽ 在SQL数据库中如何查询某一年份类型所有案号中缺失的案号
首先要知道你的案号生成规则,比如按照你提供的案号,2015-XSI-0003-101,看这个案号,大概推测生成规则是
年-分类缩写-卷宗编号-案件流水号
你提的问题是,是否缺少案号,就是说,分类缩写、卷宗编号都不会缺少,至需要判断某一年中的案子,是不是有缺少案号的情况。
分析
1、按照 年-分类缩写-卷宗编号对案件进行分组计算count,然后取 年-分类缩写-卷宗编号下的最大案号,用count值与最大案号进行比对,count值一定是小于等于最大案号的,如果等于,则表示这个 年-分类缩写-卷宗编号下没有缺失的案子,如果小于,则表示有缺失的案子,
创建临时表1,存储 年-分类缩写-卷宗编号,最大编号的号码这两个字段,准备下一步处理。
2、创建临时表2,两个字段,第一个是 年-分类缩写-卷宗编号,第二个是案号,写一个mysql函数,或者用java代码写一个循环,从1开始到临时表1中保存的最大案号,将记录插入到临时表2中,意思就是说,临时表2中应该保存所有正确的案号,然后用主业务表跟临时表2关联,临时表2中字段为null的就是缺失的编号了。