SQL字符串到int(日期)

SQL字符串到int(日期),sql,sql-server,date,Sql,Sql Server,Date,我有一个字符串数据类型为“JAN17”的字段。如何将其转换为201701(int)格式?如果2012+使用尝试转换()而不是转换(),只是为了安全起见 示例 Select convert(varchar(6),convert(date,'01'+'JAN17'),112) 返回 201701 如果2012+使用尝试转换()而不是转换(),只是为了安全 示例 Select convert(varchar(6),convert(date,'01'+'JAN17'),112) 返回 2017

我有一个字符串数据类型为“JAN17”的字段。如何将其转换为201701(int)格式?

如果2012+使用
尝试转换()
而不是
转换()
,只是为了安全起见

示例

 Select convert(varchar(6),convert(date,'01'+'JAN17'),112)
返回

201701

如果2012+使用
尝试转换()
而不是
转换()
,只是为了安全

示例

 Select convert(varchar(6),convert(date,'01'+'JAN17'),112)
返回

201701

从技术上讲,这个问题需要一个INT值

Select convert(int,convert(varchar(6),convert(date,'01'+'JAN17'),112))

从技术上讲,这个问题需要一个INT值

Select convert(int,convert(varchar(6),convert(date,'01'+'JAN17'),112))

到目前为止你试过什么?也许是一些示例代码?您如何知道几个世纪的差异?是九月还是九月?到目前为止你都试过什么?也许是一些示例代码?您如何知道几个世纪的差异?九月是九月还是九月?我知道!真是个惊喜@Johncapelletti做得很好,但对格式很好奇,因为默认格式类似于
mon-dd-yyy hh:mim(或PM)
,转换函数如何正确解析格式?这也可以用不同的格式
选择convert(varchar(6),convert(date,'2001'+'JAN17'),112)
。这是否意味着默认选项将涵盖不同的格式?@Sphinx您的示例将解析为有效日期2001-01-17。我怀疑该函数将查找4位数年份,如果没有,则假定为century和最后两位数。Set DateFormat似乎没有任何影响。@Johncapelletti,哈,刚刚发现文档没有描述支持哪种格式。文档中说:
默认值(0或100、9或109、13或113、20或120、21或121)总是返回世纪(yyyy)。
@Sandy567总是很乐意help@scsimon我知道!真是个惊喜@Johncapelletti做得很好,但对格式很好奇,因为默认格式类似于
mon-dd-yyy hh:mim(或PM)
,转换函数如何正确解析格式?这也可以用不同的格式
选择convert(varchar(6),convert(date,'2001'+'JAN17'),112)
。这是否意味着默认选项将涵盖不同的格式?@Sphinx您的示例将解析为有效日期2001-01-17。我怀疑该函数将查找4位数年份,如果没有,则假定为century和最后两位数。Set DateFormat似乎没有任何影响。@Johncapelletti,哈,刚刚发现文档没有描述支持哪种格式。文档中说:
默认值(0或100、9或109、13或113、20或120、21或121)总是返回世纪(yyyy)。
@Sandy567总是乐于帮助