【发布时间】:2022-07-07 23:20:10
【问题描述】:
我只想从下面的字符串中提取日期,并从这个日期中单独提取年份。
字符串:
'I was born on 1st Jan 1994'
除了 left 或 right 函数之外,我们还有什么函数可以从字符串中提取日期吗?
SELECT RIGHT('I was born on 1st Jan 1994', 12)
结果:“1994 年 1 月 1 日”
但我需要日期格式的结果。
【问题讨论】:
-
CONVERT的所有样式都不支持日期有后缀的日期(st、th等)。老实说,您应该修复您的应用程序层,以便它不会首先将值作为这样的句子传递,并将出生日期放在date列中。 -
这个问题没有通用的解决方案,它取决于输入的字符串格式。我们怎么知道传入的字符串值不能是“嗨,我有一只猫,名叫 mittens,我在 2003 年买的,然后我在 2009 年 1 月 21 日去看了一部电影,效果不太好,我出生了1994 年 1 月 1 日,2023 年我要开始 SQL 课程”?
-
我们是否有任何函数可以提取... 是的,文档中有一个完整的部分介绍了您的 sql server 版本中提供的各种字符串函数。但正如已经建议的那样,您的问题可能要复杂得多,具体取决于您的列/字符串中可能找到的值。每个字符串都会效仿你的例子吗?
-
而这个目标“单独提取年份”与“我需要日期格式的结果”不一致。
-
稍微绕道......你真的用的是2012吗?距离它的生命终结还有不到一周的时间。是时候考虑升级了。
标签: sql sql-server sql-server-2012