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(或仅此网站)上搜索错误消息。每天都有人问这个话题!