create table session12
(
id int,
name varchar(20),
Dateofbirth varchar(20)
);
insert into session12
values (1, 'prashanth', '29/06/1995'),
(2, 'rayala', '27/06/1997'),
(3, 'rayala1213', '7/9/2000');
create function inline_Getsession()
returns table
as
return
select
id, name,
cast(Dateofbirth as date) as DOB
from session12;
select *
from inline_Getsession();
输出:
从字符串转换日期和/或时间时转换失败。
答案 0 :(得分:1)
您可能需要使用CONVERT
和样式代码:
CONVERT(date,DateOfBirth,103)
103样式表示英国样式(dd/MM/yyyy
)。您可以在CAST and CONVERT (Transact-SQL)文档中找到样式的完整列表。
答案 1 :(得分:1)
尝试一下:
create table session12 (id int,name varchar(20),Dateofbirth varchar(20));`
insert into session12 values(1,'prashanth','29/06/1995');
insert into session12 values(2,'rayala','27/06/1997');
insert into session12 values(3,'rayala1213','7/9/2000');
create function inline_Getsession()
Returns Table
as
Return
select id,name,CONVERT(DATE,Dateofbirth,103) as DOB from session12;
select * from inline_Getsession();
将dd/mm/yyyy
转换为日期时,您需要提供103的日期格式
答案 2 :(得分:0)
您还可以设置DateFormat to DMY
如果是2012年以后的版本,我建议使用try_convert(date,...)
以避免对任何假字符串抛出错误。
示例
Declare @session12 table (id int,name varchar(20),Dateofbirth varchar(20));
insert into @session12 values(1,'prashanth','29/06/1995');
insert into @session12 values(2,'rayala','27/06/1997');
insert into @session12 values(3,'rayala1213','7/9/2000');
Set DateFormat DMY
Select *
,AsADate = convert(date,DateOfBirth)
From @session12
返回
id name Dateofbirth AsADate
1 prashanth 29/06/1995 1995-06-29
2 rayala 27/06/1997 1997-06-27
3 rayala1213 7/9/2000 2000-09-07