日期类型比较

表:User ( id, createdOn ) ——(id,创建时间)

situation #1

查出所有创建时间在2011年9月1日之后的记录。


# mysql (最简单了)

select * from user where createdOn>'2011-09-01'

# mysql的日期处理能力很强大,可以精确到年、月、日、时、分、秒、毫秒。

# 例如:

select * from user where createdOn>='2011-09'

会查出所有创建时间在2011年9月之后的记录。

#oracle

select * from user where trunc(createdOn)>trunc(to_date('2011-09-01', 'yyyy-MM-dd'))

# trunc() 是oracle的内置函数,它将日期数据转换为yyyy/MM/dd的格式。

更详细的内容可参考Trunc Function (with dates)或者TRUNC (date)


附:MySQL 为日期增加一个时间间隔:date_add()
set @dt = now();
select date_add(@dt, interval 1 day); -- add 1 day
select date_add(@dt, interval 1 hour); -- add 1 hour
select date_add(@dt, interval 1 minute); -- ...
select date_add(@dt, interval 1 second);
select date_add(@dt, interval 1 microsecond);
select date_add(@dt, interval 1 week);
select date_add(@dt, interval 1 month);
select date_add(@dt, interval 1 quarter);
select date_add(@dt, interval 1 year);
select date_add(@dt, interval -1 day); -- sub 1 day


situation #2

查出所有在2011年09月创建的记录。


# mysql 

select * from user where createdOn>='2011-09' and createdOn<'2011-10'
#oracle

select * from user where trunc(createdOn, 'MONTH')=trunc(to_date('2011-10-1', 'yyyy-MM-dd'), 'MONTH')
# trunc() 是oracle的内置函数。更详细的内容可参考 Trunc Function (with dates)或者 TRUNC (date)。。

hql

对于hql来说,日期是个头疼的问题,不过可以借助hql表达式(hql expressions)来做到。

比如第二种情况,

String hql = "from User where year(createdOn)=2011 and month(createdOn)=9 order by createdOn desc";
关于hql表达式,详见 HQL Expressions


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值