存储过程 没有年 月日比较

a307487821 2011-08-04 12:44:50
select extract(Month FROM to_date('1988-01-01','yyyy-mm-dd')) || '-' || extract(Day FROM to_date('1988-01-01','yyyy-mm-dd')) month_day1 ,
extract(Month FROM sysdate) || '-' || extract(Day FROM sysdate) month_day2 FROM DUAL;

month_day1 与 month_day2都是字符类型 的

在存储过程中能做大小的计较吗 ???

如果不行 怎么 转换成日期做比较 主要是不要年 就要月日

...全文
124 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yejihui9527 2011-08-04
  • 打赏
  • 举报
回复
字符串 可以比较的
a307487821 2011-08-04
  • 打赏
  • 举报
回复
???
luoyoumou 2011-08-04
  • 打赏
  • 举报
回复
SQL> select ascii('0601') from dual;

ASCII('0601')
-------------
48

SQL> select ascii('06操你妈逼') from dual;

ASCII('06操你妈逼')
-------------------
48
luoyoumou 2011-08-04
  • 打赏
  • 举报
回复
SQL> select (CASE WHEN '0611'>'0601' THEN 1 ELSE 0 END) AS false_true FROM dual;

FALSE_TRUE
----------
1

SQL> select (CASE WHEN '0601'>'0611' THEN 1 ELSE 0 END) AS false_true FROM dual;

FALSE_TRUE
----------
0

-- ascii 0611 0601 的ascii是一样的
-- 比较两个字符串的ASCII码,并不是将两个字符串的所有字符去比较,而只是比较这两个字符串中的首字符!
a307487821 2011-08-04
  • 打赏
  • 举报
回复
关键 是 你的 这种方法 是 字符串的比较 字符串比较的 是ascii 0611 0601 的ascii是一样的
luoyoumou 2011-08-04
  • 打赏
  • 举报
回复
这样简单的问题,你还想倒腾多久呢?
luoyoumou 2011-08-04
  • 打赏
  • 举报
回复
-- 你想怎么比较?

-- 年不用管,只比较月、日,对吧?


-- 方法有二:

-- 其一:两个数据量,分别用四个变量(月:两个变量;日:两个变量)
-- 即:A数据的月、日,分别用 A_month, A_day;
B数据的月、日,分别用 B_month, B_day;
-- if (A_month < B_month or (A_month = B_month and A_day < B_day ) )then A < B
else if A_month = B_month and A_day = B_day then A = B
else A > B

-- 其二:直接获取日期变量的月、日 相比较:
select to_char(A, 'mmdd'), to_char(B,'mmdd') into v_A, v_B from ......

if v_A < v_B ...
elsif v_A = v_B ...
else ...

-- 当然是用方法二简单啦! 直接比较!
a307487821 2011-08-04
  • 打赏
  • 举报
回复
不要 年 就 两个月日 比较
bc_pc 2011-08-04
  • 打赏
  • 举报
回复
to_date后做比较不可以吗?

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧