【问题标题】:Validate a date comprised of 3 fields in PLSQL验证由 PLSQL 中的 3 个字段组成的日期
【发布时间】: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专家现在可以提供一种方法。

【问题讨论】:

  • 只用||连接三个元素...但这并不能回答您的验证问题。

标签: sql oracle validation date plsql


【解决方案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,但您也可以只验证此类信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-23
  • 1970-01-01
  • 1970-01-01
  • 2019-06-03
  • 1970-01-01
  • 2015-04-19
  • 1970-01-01
相关资源
最近更新 更多