Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/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 server 将多个列转换为datetime_Sql Server - Fatal编程技术网

Sql server 将多个列转换为datetime

Sql server 将多个列转换为datetime,sql-server,Sql Server,如何在MsSQL中将多个列转换为datetime 我有3列,都是varchar数据类型。“月份”列包含月份(一月)的全名。 这是我的桌子 date month Year 01 January 2013 02 February 2014 03 March 2015 试试这个: 如果已使用varchar类型保存所有字段 SELECT convert(datetime, date + ' ' + substring(month, 1, 3) + '

如何在MsSQL中将多个列转换为datetime

我有3列,都是varchar数据类型。“月份”列包含月份(一月)的全名。 这是我的桌子

date  month      Year
01    January    2013
02    February   2014
03    March      2015
试试这个:

如果已使用varchar类型保存所有字段

SELECT convert(datetime, date + ' ' + substring(month, 1, 3) + ' ' + year, 106)
from yourtable
如果日期和年份为int,则可以写:

SELECT convert(datetime, convert(varchar, date) + ' ' +
substring(month, 1, 3) + ' ' + convert(varchar, year), 106)
from yourtable

有关更多信息,请参见使用Concat在所有列中显示,并使用
Convert
函数转换为日期。试试这个

select convert(date,[date]+' '+[month]+' '+[year])
from yourtable
或者,如果您使用的是
sql server 2012+
则使用
DATEFROMPARTS
函数

select DATEFROMPARTS('2013',
                      case [month] when 'January' then 1 
                              when 'Feb' then 2 
                              ....,
                      ,'01')
106格式为DD-MMM-YYYY。如果为正值,则所有月份值均为英语

请参见此示例:

print CONVERT(VARCHAR(11),GETDATE(),106)

您可以简单地连接这些值并将varchar值转换为如下所示的日期:

MS SQL Server 2012架构设置

CREATE TABLE DateTable
    ([date] varchar(2), [month] varchar(8), [Year] varchar(4))
;

INSERT INTO DateTable
    ([date], [month], [Year])
VALUES
    ('01', 'January', '2013'),
    ('02', 'February', '2014'),
    ('03', 'March', '2015')
;
用于连接和转换值的查询

SELECT CONVERT(DATE, d.[date] + d.[month] + d.[year]) AS FormattedDate 
FROM DateTable d
| FormattedDate |
|---------------|
| 2013-01-01    |
| 2014-02-02    |
| 2015-03-03    |

SELECT CONVERT(DATE, d.[date] + d.[month] + d.[year]) AS FormattedDate 
FROM DateTable d
| FormattedDate |
|---------------|
| 2013-01-01    |
| 2014-02-02    |
| 2015-03-03    |

发布您的valueOk的确切格式。我更新了我的问题。