【问题标题】:Convert Is_date in SQL在 SQL 中转换 Is_date
【发布时间】:2017-05-20 12:28:59
【问题描述】:

如何在sql中转换下面两条oracle语句

IS_DATE(pInputDate || '01', 'YYMMDD') = 'Y'

TO_DATE('19' || pInputDate || '01', 'YYYYMMDD');

我尝试了 IsDate 函数和 CONVERT(ISNULL(DATETIME, pInputDate , '') + '01', 'YYMMDD') 但它没有解决。

【问题讨论】:

  • pInputDate 会是什么样子?
  • 你有什么版本的 SQL Server? 2008+ 有IsDate()
  • pInputDate 看起来像'1899'
  • IS_DATE 不是 Oracle 函数

标签: sql sql-server oracle sql-server-2008


【解决方案1】:

对于第一个:

try_convert(date, '19' + pInputDate + '01') is not null

(“19”不是绝对必要的,但它确实检查了两位数的年份。)

第二个:

try_convert(date,  '19' + pInputDate + '01')

(注意:这里假设 pInputDate 的格式为 YYMM -- 基于 YYYYMMDD 字符格式。)

try_convert() 在 SQL Server 2012+ 中可用。所有版本的 SQL Server 都将 YYYYMMDD 格式的字符串识别为日期。

对于 SQL Server 2008,您没有 try_convert()isdate() 可能会有所帮助:

isdate('19' + pInputDate + '01') = 1

第二个:

convert(date,  '19' + pInputDate + '01')

这不会捕获错误,因此不如try_convert() 安全。

【讨论】:

  • Plus1 用于推断 pInputDate 的样子
  • awe 来吧,这是拼写出来的! pInputDate || '01', 'YYMMDD' 一定是YYMM! :P
  • 您好,谢谢。我收到错误“try_convert”不是可识别的内置函数名称。
  • @xQbert 我没看到。我从不认为年是YY。当戈登发布他的答案时,我才有了“啊哈”的时刻
  • 这个答案对我没有帮助,因为当我执行此操作时,'try_convert' 不是一个可识别的内置函数名称
猜你喜欢
  • 2022-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多