验证由 PLSQL 中的 3 个字段组成的日期

Posted

技术标签:

【中文标题】验证由 PLSQL 中的 3 个字段组成的日期【英文标题】:Validate a date comprised of 3 fields in PLSQL 【发布时间】:2015-10-08 21:01:07 【问题描述】:

我不是 PLSQL 方面的专家。通常要验证日期,我会这样做:

dt_variable := TO_DATE(<INPUT_DATE>,<DATE_FORMAT>)

如果它返回错误,我会知道日期无效。不过我现在有不同的要求。日、月和年都是单独的文本字段。我需要确保日期从 1 到 31 有效,月份是 JAN-DEC(3 个字母文本),年份的格式是 YYYY。我还需要检查日期是否有效,例如没有 6 月 31 日。由于我有 3 个字段,因此我无法使用 to_date 函数,是否有任何其他函数可以用来完成此操作。我已经搜索过,但找不到任何东西,希望sql专家现在可以提供一种方法。

【问题讨论】:

只用||连接三个元素...但这并不能回答您的验证问题。 【参考方案1】:

根本不要尝试验证单独的元素;将它们与适当的分隔符连接在一起,并将组合值视为一个;例如:

to_date(l_day || '/' || l_month || '/' || l_year, 'DD/MON/YYYY')

使用月份名称或缩写可能会带来问题,因为您依赖于 NLS 设置匹配。如果您知道这些值将始终为英语,则可以将 NLS_DATE_LANGUAGE 与to_date 的可选第三个参数一起指定。使用月份数字通常更安全;以及明确的日期格式,例如 YYYY-MM-DD。听起来你无法控制它。

【讨论】:

如果您的月份格式为 JAN、FEB 等,您可以使用 dd/mon/yyyy 而不是 dd/mm/yyyy,但您也可以只验证此类信息。

以上是关于验证由 PLSQL 中的 3 个字段组成的日期的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter:验证两个日期字段

php中Http请求方法和响应状态码整理教程

Symfony 3.4中的多标准搜索

sql导入DBF程序

Laravel、Carbon 和验证

将 TIMESTAMP 转换为人类日期和时间