
select * from 表名 where 日期字段>=to_date('2013-05-01 00:00:00','yyyy-mm-dd hh:mi:ss')
and 日期字段<=to_date('2013-05-31 06:00:00','yyyy-mm-dd hh:mi:ss')
1、通常情况下,Like主要用在字符类型的查询中,不会用在日期类型中。即使要用在日期类型中,也是先转换成字符型再用like。用不用like关键看你的查询需求。2、一般情况下,查询月份都带上年份,不然搞不清是哪一年的。
3、为了查询效率,一般尽可能左边直接用字段。
所以:
select
*
from
[表名]
where
[字段名]
between
to_date('20080801','yyyymmdd')
and
to_date('20080831','yyyymmdd')
要比
select
*
from
[表名]
where
to_char([字段名],'yyyymm')
=
'200808'
--
或者:to_char([字段名],'yyyymmdd')
like
'200808%'
效率高很多。
david=# select extract(year from now())date_part
-----------
2013
(1 row)
david=# 3.2 取月份
david=# select extract(month from now())
date_part
-----------
4
(1 row)
david=#
david=# select extract(day from timestamp '2013-04-13')
date_part
-----------
13
(1 row)
david=#
david=# SELECT EXTRACT(DAY FROM INTERVAL '40 days 1 minute')
date_part
-----------
40
(1 row)
david=# 3.3 查看今天是一年中的第几天
david=# select extract(doy from now())
date_part
-----------
102
(1 row)
david=# 3.4
查看现在距1970-01-01 00:00:00 UTC 的秒数
david=# select extract(epoch from now())
date_part
------------------
1365755907.94474
(1 row)
david=# 3.5 把epoch 值转换回时间戳
david=# SELECT TIMESTAMP WITH TIME ZONE 'epoch' + 1369755555 * INTERVAL '1 second'
?column?
------------------------
2013-05-28 23:39:15+08
(1 row)
david=#
--取day
skytf=>select extract(day from now())
date_part
-----------
3
(1 row)
skytf=>select extract(day from timestamp '2011-06-03')
date_part
-----------
3
(1 row)
skytf=>select timestamp '2011-06-03'
timestamp
---------------------
2011-06-03 00:00:00
(1 row)
--取小时
skytf=>select extract (hour from now())
date_part
-----------
14
(1 row)
--取分钟
skytf=>select extract (minute from now())
date_part
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)