Sql server 如何在sql内联函数中将varchar转换为日期数据类型
输出: 从字符串转换日期和/或时间时,转换失败Sql server 如何在sql内联函数中将varchar转换为日期数据类型,sql-server,Sql Server,输出: 从字符串转换日期和/或时间时,转换失败 您可能需要使用CONVERT和样式代码: 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, '
您可能需要使用
CONVERT
和样式代码:
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();
103样式指英国样式(
dd/MM/yyyy
)。您可以在文档中找到样式的完整列表。您可能需要使用CONVERT
和样式代码:
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();
103样式指英国样式(dd/MM/yyyy
)。您可以在文档中找到样式的完整列表。试试以下方法:
CONVERT(date,DateOfBirth,103)
将dd/mm/yyyy
转换为日期时,需要提供103的日期格式
CONVERT(date,DateOfBirth,103)
将
dd/mm/yyyy
转换为日期时,需要提供103的日期格式您还可以将日期格式设置为DMY
如果是2012+,我建议使用try\u convert(date,…)
避免为任何伪字符串抛出错误
示例
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();
返回
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
您还可以将
DateFormat设置为DMY
如果是2012+,我建议使用try\u convert(date,…)
避免为任何伪字符串抛出错误
示例
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();
返回
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
你说得对@UnhandledExcepSean。我花了太多时间从
MM/dd/yyyy
上转换,所以我处于自动驾驶状态:)104=dd.MM.yyyy
而103=dd/MM/yyyyy
你是对的@UnhandledExcepSean。我花了太多时间从MM/dd/yyyy
转换,所以我处于自动驾驶状态:)104=dd.MM.yyyy
而103=dd/MM/yyyyy
非常简单-不要这样做。修复您的架构并使用正确的数据类型。出生日期不是字符串,而是日期(而不是datetime或datetime2)。要了解这是一个问题的原因,只需在internet(或仅此网站)上搜索错误消息。每天都有人问这个话题!很简单-不要这样做。修复您的架构并使用正确的数据类型。出生日期不是字符串,而是日期(而不是datetime或datetime2)。要了解这是一个问题的原因,只需在internet(或仅此网站)上搜索错误消息。每天都有人问这个话题!