sql语句:select VRECEIPTCODE from so_sale where dbilldate >='2011-11-26' and dbilldate =< '2012-03-29'
下列语句报错:[Error Code: 936, SQL State: 42000] ORA-00936: 缺失表达式
[code="SQL"]select VRECEIPTCODE from so_sale where dbilldate >='2011-11-26' and dbilldate =< '2012-03-29'
:[Error Code: 936, SQL State: 42000] ORA-00936: 缺失表达式
[/code]
你的时间dbilldate 是不是字符型的?没有用Oracle本身的时间类型?
好像是=有问题?
dbilldate =< '2012-03-29'
改为:dbilldate <= '2012-03-29'
试一试。
在拼sql语句或者是java代码中=都在不等号右边。我记得是这样。
[code="java"]1.一下心血来潮,把部分Oracle对时间的一些处理,整理了一下,在这里分享一下(不足之处还请各位大牛指正)。
2.--因为Oracle的默认时间格式为 dd-mon-yy
3.SQL> select sysdate from dual;
4.SYSDATE
5.--------------
6.21-12月-10
7.
8.--所以如果要修改一下时间格式可以有以下两种方
9. --修改当前会话的时间格式
10.SQL> alter session set nls_date_format = 'yyyy-mm-dd';
11.会话已更改。
12.SQL> select sysdate from dual;
13.SYSDATE
14.----------
15.2010-12-21
16.
17. --修改当前系统的时间格式(需要重启数据库)
18.SQL> alter system set nls_date_format = 'yyyy-mm-dd' scope = spfile;
19.系统已更改。
20.SQL> select sysdate from dual; --还没有生效
21.SYSDATE
22.--------------
23.21-12月-10
24.
25.--查询当前系统的时间格式
26.SQL> show parameter nls_date_format;
27.NAME TYPE VALUE
28.------------------------------------ ----------- ------------------------------
29.nls_date_format string
30.
31.--查询当前时间
32.SQL> select sysdate from dual;
33.SYSDATE
34.-------------------
35.2010-12-21
36.--在当前时间的基础上延迟10分钟,计算方式:1天除以24小时=1小时,1小时除以6分钟=10分钟。
37.SQL> select sysdate + 1/24/6 from dual;
38.SYSDATE+1/24/6
39.-------------------
40.2010-12-21 20:43:37
41.
42.--在当前时间的基础上加一个月
43.SQL> select add_months(sysdate,1) from dual;
44.ADD_MONTHS(SYSDATE,
45.-------------------
46.2011-01-21 20:36:00
47.
48.--在当前时间的基础上减一个月
49.SQL> select add_months(sysdate,-1) from dual;
50.ADD_MONTHS(SYSDATE,
51.-------------------
52.2010-11-21 20:37:05
53.
54.--在当前时间见基础上加一年(减一年,参数为-12)
55.SQL> select add_months(sysdate,12) from dual;
56.ADD_MONTHS(SYSDATE,
57.-------------------
58.2011-12-21 20:40:26
59.
60.--获取当前时间,是星期几,第二个查询,星期天=1,星期一=2,以此类推。
61.SQL> select to_char(sysdate,'day') from dual;
62.TO_CHAR(S
63.---------
64.星期二
65.SQL> select to_char(sysdate,'d') from dual;
66.T
67.-
68.3
69.
70.--获取某个日期是星期几
71.SQL> select to_char(to_date('2010-08-09','yyyy-mm-dd'),'day') from dual;
72.TO_CHA
73.------
74.星期一
75.
76.--获取当前月的最第一天是星期几
77.SQL> select to_char(sysdate-to_number(to_char(sysdate,'dd')-1),'day') from dual;
78.TO_CHAR(S
79.---------
80.星期三
81.
82.--获取当前月的最后一天是星期几
83.SQL> select to_char(last_day(sysdate),'day') from dual;
84.TO_CHAR(L
85.---------
86.星期五
87.SQL> select to_char(last_day(sysdate),'d') from dual;
88.T
89.-
90.6
91.
92.--获取上个月的最第一天是星期几
93.SQL> select to_char(add_months(sysdate,-1)-to_char(sysdate-1,'dd'),'day') from dual;
94.TO_CHAR(A
95.---------
96.星期一
97.SQL> select to_char(add_months(sysdate,-1)-to_char(sysdate-1,'dd'),'d') from dual;
98.T
99.-
100.2
101.
102.--获取上个月的最后一天是星期几
103.SQL> select to_char(last_day(add_months(sysdate,-1)),'day') from dual;
104.TO_CHAR(L
105.---------
106.星期二
107.SQL> select to_char(last_day(add_months(sysdate,-1)),'d') from dual;
108.T
109.-
110.3
111.
112.--获取下个月的最第一天是星期几
113.SQL> select to_char(add_months(sysdate,1)-to_char(sysdate-1,'dd'),'day') from dual;
114.TO_CHAR(A
115.---------
116.星期六
117.SQL> select to_char(add_months(sysdate,1)-to_char(sysdate-1,'dd'),'d') from dual;
118.T
119.-
120.7
121.
122.--获取下个月的最后一天是星期几
123.SQL> select to_char(last_day(add_months(sysdate,1)),'day') from dual;
124.TO_CHAR(L
125.---------
126.星期一
127.SQL> select to_char(last_day(add_months(sysdate,1)),'d') from dual;
128.T
129.-
130.2
131.
132.--获取本周星期一的日期
133.SQL> select sysdate - to_char(sysdate -2,'d') from dual;
134.SYSDATE-TO
135.----------
136.2010-12-20
137.
138.--获取本周星期天的日期
139.SQL> select sysdate + 7 - to_char(sysdate -1,'d') from dual;
140.SYSDATE+7-
141.----------
142.2010-12-26
143.
144.--获取上周星期一的日期
145.SQL> select sysdate - 7 - to_char(sysdate -2,'d') from dual;
146.SYSDATE-7-
147.----------
148.2010-12-13
149.
150.--获取上周星期天的日期
151.SQL> select sysdate - to_char(sysdate -1,'d') from dual;
152.SYSDATE-TO
153.----------
154.2010-12-19
155.
156.--获取下周星期一的日期
157.SQL> select sysdate + 7 - to_char(sysdate -2,'d') from dual;
158.SYSDATE+7-
159.----------
160.2010-12-27
161.
162.--获取下周星期天的日期
163.SQL> select sysdate + 7 + to_char(sysdate-2,'d') from dual;
164.SYSDATE+7+
165.----------
166.2011-01-02
167.
168.--获取当前月共有多少天
169.SQL> select to_char(last_day(sysdate),'dd') from dual;
170.TO
171.--
172.31
173.
174.--获取今年有多少天
175.SQL> select sum(to_char(last_day(add_months(sysdate,-to_char(sysdate,'mm')+level)),'dd')) from dual connect by level <= 12;
176.SUM(TO_CHAR(LAST_DAY(ADD_MONTHS(SYSDATE,-TO_CHAR(SYSDATE,'MM')+LEVEL)),'DD'))
177.-----------------------------------------------------------------------------
178. 365
179.
180.--获取本月的最后一天
181.SQL> select last_day(sysdate) from dual;
182.LAST_DAY(S
183.----------
184.2010-12-31
185.
186.--计算两个时间的差
187.SQL> select floor(sysdate-to_date('20100506','yyyy-mm-dd')) from dual;
188.FLOOR(SYSDATE-TO_DATE('20100506','YYYY-MM-DD'))
189.-----------------------------------------------
190. 232
191.
192.--获取从当年1月1日至今有多少天
193.SQL> select to_char(sysdate,'ddd') from dual;
194.TO_
195.---
196.358
197.
198.--判断当前时间是上午还是下午
199.SQL> select case when to_char(sysdate, 'hh24') >= 23 or to_char(sysdate, 'hh24') < 3 then '凌晨' when to_char(sysdate, 'hh24') >= 3 and to_char(sysdate, 'hh24') < 6 then '早晨' when to_char(sysdate, 'hh24') >= 6 and to_char(sysdate, 'hh24') < 8 then '上午' when to_char(sysdate, 'hh24') >= 8 and to_char(sysdate, 'hh24') < 11 then '中午' when to_char(sysdate, 'hh24') >= 11 and to_char(sysdate, 'hh24') < 13 then '下午' when to_char(sysdate, 'hh24') >= 13 and to_char(sysdate, 'hh24') < 17 then '傍晚' when to_char(sysdate, 'hh24') >= 17 and to_char(sysdate, 'hh24') < 19 then '晚上' when to_char(sysdate, 'hh24') >= 19 and to_char(sysdate, 'hh24') < 23 then '深夜' end from dual;
200.CASE
201.
202.--查找某个时间段内有多少个星期一
203.SQL> select count(1) from (select to_char(to_date('20101101', 'yyyy-mm-dd') + level, 'd') d from dual connect by level <= (select floor(to_date('20101201', 'yyyy-mm-dd') - to_date('20101101', 'yyyy-mm-dd')) from dual)) w where w.d=2;
204. COUNT(1)
205.----------
206. 4
207.
208.--获取当前时间或指定时间是所在年的第几周
209.SQL> select to_char(sysdate,'iw') from dual;
210.TO
211.--
212.51
[/code]
自己跟着我资料调整,要学会自己思考
dbilldate 什么类型的?
需要转一下·
[code="sql"]select VRECEIPTCODE from so_sale where dbilldate >=to_date('2011-11-26') and dbilldate =< to_date('2012-03-29')
[/code]
我测了一下,ORA-00936: 缺失表达式 应该是因为=<错了
[code="sql"]select VRECEIPTCODE from so_sale where dbilldate >='2011-11-26' and dbilldate <= '2012-03-29'
[/code]
如果dbilldate 是date类型,那么这个sql应改为:
[code="sql"]select VRECEIPTCODE from so_sale where dbilldate >=to_date('2011-11-26','yyyy-MM-dd') and dbilldate <=to_date('2012-03-29','yyyy-MM-dd')
[/code]
如果左右两边都有等号写成这样 最好:
[code="SQL"]select dbilldate,VRECEIPTCODE from so_sale where dbilldate between '2011-11-26' and '2012-03-29'[/code]
你的dbilldate 是date类型的吧,应该是这样的:
[code="sql"]
select VRECEIPTCODE from so_sale where dbilldate >= to_date('2011-11-26','yyyy-mm-dd') and dbilldate <= to_date('2012-03-29','yyyy-mm-dd')
[/code]
你试试