String birthday ="2000-02-29"
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd")
Calendar cal = Calendar.getInstance()
int yearNow = cal.get(Calendar.YEAR)// 年
cal.setTime(formatter.parse(birthday))
int birthyear=cal.get(Calendar.YEAR)
while(birthyear<yearNow){
cal.set(Calendar.YEAR,cal.get(Calendar.YEAR)+1)
birthyear=cal.get(Calendar.YEAR)
}
Date ed=new Date()
Date sd=cal.getTime()
long days=0
if((ed.getTime() - sd.getTime()) / (3600 * 24 * 1000)>0 ){
days=(ed.getTime() - sd.getTime()) / (3600 * 24 * 1000)
System.out.println("距离你生日还有" + days + "天")
}else{
cal.set(Calendar.YEAR,cal.get(Calendar.YEAR)+1)
sd=cal.getTime()
days=(ed.getTime() - sd.getTime()) / (3600 * 24 * 1000)
System.out.println("距离你生日还有" + days + "天")
}
}
这个题问题一般要提完整,别人才能回答,这里不知道你的表结构就很难给你弄。默认简单的在同一张表给你弄,select * from 表名 where 存储生日日期字段 = 你的生日。 这里存在数据库里的一般会是时间戳,你查询时把你生日转变成时间戳差就可以了查询一段时间内过生日的员工,是一个日期的比较的过程,所以只要在where 子句添加时间的筛选即可。
一、语句会用到convert()函数
CONVERT() 函数功能 :
1、把日期转换为新数据类型的通用函数。
2、用不同的格式显示日期/时间数据。
语法:CONVERT(data_type(length),data_to_be_converted,style)
data_type(length) 规定目标数据类型(带有可选的长度)。data_to_be_converted 含有需要转换的值。style 规定日期/时间的输出格式。
可以使用的 style 值:
二、例表格:ygsrb,表结构如下
三、例如查询4月份生日的员工,也就是csrq的日期大等于4月1日,小于5月1日,那么SQL语句就可以这样写:
select * from ygsrb whereright(convert(char(10),csrq,112),4) >= '0401' and
right(convert(char(10),csrq,112),4) < '0501'
四、语句解析:
convert(char(10),csrq,112):将日期转换成 ‘yyyymmdd’格式
right(convert(char(10),csrq,112),4):截取转换后的时间右边4位“mmdd”
运行结果:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)