怎样把字符型转换成日期型呢?
例如:20110211 转换成 2011-02-11试过to_date,但是报错了:'TO_DATE' 不是可以识别的 内置函数名称。
试过convert,发现没变!
试过cast,也报错了:从 varchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值
求救求救
例如:20110211 转换成 2011-02-11试过to_date,但是报错了:'TO_DATE' 不是可以识别的 内置函数名称。
试过convert,发现没变!
试过cast,也报错了:从 varchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值
求救求救
2011-02-11 00:00:00.000(1 row(s) affected)
----------
2011-02-11(1 row(s) affected)
/*
(无列名)
2011-02-11 00:00:00.000
*/
------------------------------------------------------
2011-02-11 00:00:00.000(所影响的行数为 1 行)
select convert(varchar(10),cast('20110211' as datetime),120)/*
----------
2011-02-11
------------------------------------------
2011-02-11 00:00:00
set @date='20110211'
select convert(varchar(10),cast(@date as datetime),120)/*
----------
2011-02-11
也可以这样显式转换:cast ('20110211' as datetime)
--看看你的数据是否有超出datetime类型的范围(1753--9999),或者月份有超出1—12这个范围,再也许有天数和月份对不上的,如20110230等。
--没的话!可以直接cast
select cast(字段 as datetime)
from tb
declare @date varchar(100)
set @date = '20110211'select convert(varchar(10),cast(@date as datetime),120)
where isdate(@date) = 1
use tempdb;
/*
create table test
(
[时间] nvarchar(8) not null
);insert into test([时间]) values('20110110'),('20110111'),('20110120'),('20110228');
*/
--在SQLServer2008下,使用date类型
select CAST([时间] as date) from test;
select f1 from openrowset('Microsoft.Jet.OLEDB.4.0','excel 5.0;hdr=no;database=C:\dateconvert.xls',Sheet2$)
f1里的数据类似20110212。如果这样写select cast(f1 as datetime) from openrowset('Microsoft.Jet.OLEDB.4.0','excel 5.0;hdr=no;database=C:\dateconvert.xls',Sheet2$)
会提示:将 expression 转换为数据类型 datetime 时出现算术溢出错误。
而在excel里将单元格格式改为日期,单元格内容又会变成######。