相关文章推荐
耍酷的木瓜  ·  mysql ...·  2 周前    · 
飞翔的枕头  ·  python - TypeError: ...·  1 年前    · 
憨厚的手电筒  ·  如何在VC中使用7z ...·  1 年前    · 
傻傻的瀑布  ·  使用python在windows ...·  1 年前    · 

先需要判断表中的以varchar2 类型存的时间,是否正确。我想到的方法就是用正则表达式来判断。

select case when regexp_like('20191111','^((((1|2|3)\d{3})(0[13578]|1[02])(0[1-9]|[12]\d|3[01]))|(((1|2|3)\d{3})(0[469]|11)(0[1-9]|[12]\d|30))|(((1|2|3)\d{3})02(0[1-9]|1\d|2[0-8]))|((((1|2|3)/d([13579][26]|[2468][048]|0[48]))|(1000)|(2000)|(3000))02(0[1-9]|[12]\d)))$') then 1 else 0 end from dual;

正则表达式解释:
(((1|2|3)\d{3})(0[13578]|1[02])(0[1-9]|[12]\d|3[01])) 1000年到3999年的1,3,5,7,8,10,12月,即到31号的月份
(((1|2|3)\d{3})(0[469]|11)(0[1-9]|[12]\d|30)) 1000年到3999年的4,6,9,11月,即到30号的月份
(((1|2|3)\d{3})02(0[1-9]|1\d|2[0-8])) 1000年到3999年的2月,所有的2月都到28号
((((1|2|3)/d([13579][26]|[2468][048]|0[48]))|(1000)|(2000)|(3000))02(0[1-9]|[12]\d)) 1000年到3999年中的闰年,2月有29号

Author: rainnyDate:2009-2-18CREATE OR REPLACE FUNCTION F_ISDATE( P_COLVALUE VARCHAR2, P_mandatory VARCHAR2) RET... 下面通过一些例子来说明使用正则表达式来处理一些工作中常见的问题。 1. REGEXP_SUBSTR REGEXP_SUBSTR 函数使用正则表达式来指定返回串的起点和终点,返回与source_string 字符集中的VARCHAR2 或CLOB 数据相同的字符串。 语法: –1.REGEXP_SUBSTR与SUBSTR函数相同,返回截取的子字符串 REGEXP_SUBSTR(srcstr, pattern [, position [, occurrence [, match_option]]]) 注: srcstr 源字符串 pattern 正则表达式样式 position 开始匹配字符位置 改了一下,日期格式为 YYYYMMDD, 反向引用减少到只有2个,性能好一点,0000年已经视作错误SQL> select * from t;MYDATE--------1900022919040229200002292400022924010331140103320000010120110721201102282011022900000228201105302011123120110831... 很多时候, 我们碰到的数据库都是历史数据库, 有时就会碰到各种各样的数据不规范的情况, 在这里讨论一下日期字符串的处理.虽然各种数据库中都有各自的日期类型,但是因为各种各样的情况我们会碰到用字符串来表示日期的情况,如果这些数据没有完全符合预定的日期格式,就会带来一些bug.在Oracle中对日期字符串做转换都要按照某种固定格式,一些特定的格式也会收到语言的影响,这个在to_date和to... Oracle中的Like操作符使用'_'和'%'作为通配符,使用就像这样:SELECTnameFROMtest_likeWHEREnamelike'_a%';即匹配test_like表name列中第2个字母是a的所有行。但是注意,Oracle匹配时区分大小写的。也就是说上面的查询时无法查询到name='SAas'这行的。Oracle10g中提供的正则表达式功能可以很好的解决这个问题,当... oracle 日期判断判断日期是否合法,返回标记值 若为0则表名日期合法,若日期格式不合法则会返回负值 输入日期格式为 YYYY-MM-DD 或 YYYYMMDD   类型 很多时候我们的日期可能存放的是字符串类型,在插入的时候也很有可能插入的日期格式不正确,因此我们需要找出这些不合符的日期格式,来此来修正。当然可以使用TO_DATE函数一个一个的转换来找出不合法的日期。ORACLE提供了正则表达式正则表达式在处理不合符的IP ,手机号,EMAIL等大有用处。此处我们用正则表达式找出不合法的日期格式。SQL> conn ysp/yspConnected.SQL... 最简单的正则 如 : /d{4}-/d{2}-/d{2}但是实际情况却不是那么简单,,要考虑,有效性和闰年等问题.....对于日期的有效范围,不同的应用场景会有所不同。MSDN中定义的DateTime对象的有效范围是:0001-01-01 00:00:00到9999-12-31 23:59:59。UNIX时间戳的0按照ISO 8601规范为 :1970-01-01T00:00:00Z。先考虑与年份...