如何在MsSQL中将多字列转换为日期时间?
我有3列全部采用varchar数据类型。月份列包含月份的全名(1月)。 这是我的桌子。
date month Year
01 January 2013
02 February 2014
03 March 2015
答案 0 :(得分:0)
试试这个:
如果您保存了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
有关详细信息,请参阅here
答案 1 :(得分:0)
使用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')
答案 2 :(得分:0)
Declare
@an varchar(100) = '01',
@luna varchar(100) = 'January',
@zi varchar(100) = '2013'
SELECT CONVERT(datetime,@zi+' '+SUBSTRING(@luna,1,3)+' '+@an,106)
106格式是DD-MMM-YYYY。如果你是肯定的,所有月份的值都是英文的。
见这个例子:
print CONVERT(VARCHAR(11),GETDATE(),106)
答案 3 :(得分:0)
您可以简单地连接值并将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
<强> Results 强>:
| FormattedDate |
|---------------|
| 2013-01-01 |
| 2014-02-02 |
| 2015-03-03 |