SQL Server 中的字符串到日期类型转换问题

发布于 2025-01-12 11:36:57 字数 700 浏览 0 评论 0原文

我正在尝试将字符串数据类型转换为日期,但它适用于某些日期,但不适用于其他日期。我正在使用 convert() 函数

示例

当我将此值赋予 string 参数时,它可以正常工作

select  Convert(DATE, '01/05/2017', 101)

在此处输入图片描述

但尝试用不同的但相同的代码正确的日期不起作用,并给出如下所示的错误

select  Convert(DATE, '13/06/2013', 101)

在此处输入图像描述

我收到以下错误:

转换时消息 241,级别 16,状态 1,第 15 行转换失败 字符串中的日期和/或时间。

I am trying to typecast the string data to date but it works with some date but not for others. I am using the convert() function

Example

When I give this value to the string parameter it works fine

select  Convert(DATE, '01/05/2017', 101)

enter image description here

but trying the same code with a different but correct date doesn't work and gives the below-shown error

select  Convert(DATE, '13/06/2013', 101)

enter image description here

I am getting the following error:

Msg 241, Level 16, State 1, Line 15 Conversion failed when converting
date and/or time from character string.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

别忘他 2025-01-19 11:36:57

正如 @Squirrel 在评论中提到的,正确的样式是 103 ,来自 文档

在此处输入图像描述

select  Convert(DATE, '01/05/2017', 103) as my_date;
my_date
2017-05-01

select  Convert(DATE, '13/06/2013', 103) as my_date2;

my_date2
2013-06-13

我建议不要将日期存储为文本,您可以使用日期时间创建另一列(即使这超出了问题范围)并更新该列,如下例所示:

create table test (
wrong_date_format varchar(25)
);

insert into test values 
('01/05/2017'),
('13/06/2013');

ALTER TABLE test ADD wright_date_format date;

update test set wright_date_format = Convert(DATE, wrong_date_format, 103);

演示

As @Squirrel mentioned in the comments the right style is 103 , from the docs

enter image description here

select  Convert(DATE, '01/05/2017', 103) as my_date;
my_date
2017-05-01

select  Convert(DATE, '13/06/2013', 103) as my_date2;

my_date2
2013-06-13

I will suggest never store dates as text, you can create another column with datetime (even though this is out of the question scope) and update the column like the example below:

create table test (
wrong_date_format varchar(25)
);

insert into test values 
('01/05/2017'),
('13/06/2013');

ALTER TABLE test ADD wright_date_format date;

update test set wright_date_format = Convert(DATE, wrong_date_format, 103);

Demo

池木 2025-01-19 11:36:57

@Muhammad Waheed 请检查这可能对你有帮助..

select  Convert(DATE, Cast('13-Jun-2013' as date), 101) 

因为 SQL Server 在你的第二个示例中将 13 视为一个月。这就是导致错误的原因。

@Muhammad Waheed Please check this might be helpful to u..

select  Convert(DATE, Cast('13-Jun-2013' as date), 101) 

because SQL Server is considering 13 in your second exemple as a month. that's why causing error.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文