sql - Oracle 正则表达式来验证时间
问题描述
我正在尝试验证 oracle SQL 中的正则表达式以检查时间格式:
我要检查的所需格式是:
2/27/2020 3:53:02 PM
我已经为日期格式创建了一个正则表达式,例如:
20200227 --> using REGEXP_LIKE('20190222', '^\d{4}(0[1-9]|(1[0-2]))(0[1-9]|[1-2][0-9]|3[0-1])$')
有人可以给我一个时间格式的提示吗?
解决方案
对我来说,看起来好像你开始错了。如果要验证日期(时间)格式,则将其存储为字符串,这是一个很大的错误。
如果您将该列(或其他任何内容)设置为DATE
,在 Oracle 中该列同时包含日期和时间,那么数据库将注意您只能输入有效值。
您提到的格式或任何其他格式是显示问题,而不是存储问题。
一种选择是强制TO_DATE
转换;像这样的东西:
SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';
Session altered.
SQL> set ver off
SQL> select to_date('&date_value', 'mm/dd/yyyy hh:mi:ss am') result from dual;
Enter value for date_value: 2/27/2020 3:53:02 pm
RESULT
-------------------
27.02.2020 15:53:02
SQL> /
Enter value for date_value: 13/54/2020 x:23:83 am
select to_date('13/54/2020 x:23:83 am', 'mm/dd/yyyy hh:mi:ss am') result from dual
*
ERROR at line 1:
ORA-01843: not a valid month
SQL>
所以:如果转换有效,那么格式就可以了。否则,你输入了一些愚蠢的东西,转换不会通过。这样的代码可以用作返回例如布尔值的函数。
推荐阅读
- python - 如何使 Flask 应用程序中的局部变量由另一个函数控制?
- python - 这个调用链在 python 中合法吗?
- sql - 我们如何在 Hadoop 中截断空格后的文本?
- angular - Angular 在详细信息页面上记录不正确的 url
- python - 删除字符串 pandas 中的括号区域
- docker - Kong - 自定义插件返回:自定义插件插件已启用但未安装;
- php - 使用 Laravel 导入 CSV 时未定义的偏移量
- http-status-codes - 对于第三方身份验证失败,我应该使用什么 HTTP 代码?
- python - Django:NullBooleanField 值 False 未从 MySQL 数据库正确恢复
- slurm - 数组中所有作业的 seff 作业效率报告