Sql server 将多个列转换为datetime
如何在MsSQL中将多个列转换为datetime 我有3列,都是varchar数据类型。“月份”列包含月份(一月)的全名。 这是我的桌子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) + '
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的确切格式。我更新了我的问题。