验证由 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 个字段组成的日期的主要内容,如果未能解决你的问题,请参考以下文章