Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从sql中的字符串中获取月份?_Sql_Sql Server_Tsql_Sql Server 2008 - Fatal编程技术网

如何从sql中的字符串中获取月份?

如何从sql中的字符串中获取月份?,sql,sql-server,tsql,sql-server-2008,Sql,Sql Server,Tsql,Sql Server 2008,我必须从以格式存储字符串的列中获取月份- Column ---------- `Feb2007' 'Sep2008' 因此,如果值是'Feb2007',那么我需要返回2,或者如果值是'Sep2009',那么我应该返回9 SQL Server 2008中是否有内置函数来实现类似的功能?尝试以下方法: select datepart(mm, cast('feb2008' as datetime)) 如果没有其他内容,您可以创建一个包含月份名称和数值的表 如果服务器功能始终正确识别您的月

我必须从以格式存储字符串的列中获取月份-

Column
----------
`Feb2007'     
'Sep2008'
因此,如果值是
'Feb2007'
,那么我需要返回
2
,或者如果值是
'Sep2009'
,那么我应该返回
9

SQL Server 2008中是否有内置函数来实现类似的功能?

尝试以下方法:

select datepart(mm, cast('feb2008' as datetime))

如果没有其他内容,您可以创建一个包含月份名称和数值的表

如果服务器功能始终正确识别您的月份名称,您就可以了,但如果这些数据中的任何一个是手动输入的,则可能会出现拼写错误或其他不一致的情况,并且一个表将允许您支持这些数据。

此外:


选择月份(CAST(date_col AS datetime))

我完全同意Beth的观点,但有理由解释为什么应该这样做,而不是作为最后手段:

数据应以其本机格式存储。您不应将其存储为字符串,也不应将其存储为8位整数。这也没什么意义。SQL是一个非常聪明的野兽,但是如果你把基本数据类型搞砸了,它的大多数有用功能和启发都会消失——甚至是索引和排序之类的基本功能。更不用说,您的数据变得SQL Server显式(即依赖于某些SQL行为)而不是通用的,从而降低了可移植性

用更正式的术语来说:您迫使它成为数据层的信息。这与所有已知的数据处理规则相反

SELECT month(column);
这应该行得通,不过我已经有一段时间没有使用SQL Server了

    datepart(month,_datetime)
其中_datetime是列。你也可以使用

    datepart(month,getdate())

要获取当前月份的数据,如果可能的话,可能需要重新访问数据库设计。在存储到表中之前将其转换为datetime效率更高。例如,查找日期范围所需的时间比需要的时间长得多,因为在查找范围内的日期之前,您必须强制转换每个不同的值。

这些值存储在逗号分隔的列表中?不,它只存储为一个条目。我的意思是一行的值是Feb2007,第二行的值是sep2008。我希望您没有在列中存储
引号!varchar日期已经够糟糕的了!我希望这里没有
Sept2008
字符串:)耶..我没有..我正在处理具有varchar日期的遗留数据库,要求更改任何内容都是亵渎神明!我想这真的取决于地区设置。我打赌sql server可能无法将此字符串识别为date。当有人将日期/时间存储为VARCHAR/etc而不是本机日期/时间数据类型时,我总是不寒而栗…@OMG Ponies没有附加xsd的xml导入怎么办?或Excel数据连接到sql server?或者别的什么。这些问题是课程的标准,或者只是代码>选择月份('SEP2008)