首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server中的日期时间转换

问SQL Server中的日期时间转换
EN

Stack Overflow用户
提问于 2013-01-04 04:53:03
回答 2查看 247关注 0票数 1
代码语言:javascript
复制
declare @v1 datetime = getdate();
declare @v2 int = 2;
select @v1 + @v2;
---------------------------
2013-01-06 08:16:20.620

但

代码语言:javascript
复制
declare @v1 datetime = getdate();
declare @v2 char(1) = '2';
select @v1 + @v2;
--------------------------

Msg 241,第16级,状态1,第5行 从字符串转换日期和/或时间时,转换失败。

给出错误。但是int @v2和char @v2都有相同的值吗?

EN

回答 2

Stack Overflow用户

发布于 2013-01-04 06:32:18

当组合两个不同类型的运算符时,您将进行隐式类型转换。转换的内容由数据类型优先规则控制。

char和int的优先级都低于日期时间,因此您的查询相当于:

代码语言:javascript
复制
select @v1 + cast(@v2 as datetime);

将int值2转换为datetime工作得很好,并给出了1900-01-03 00:00:00.000

但是,将char值2转换为datetime并不有效,因为字符串2不能被解释为有效的日期时间值。

票数 3
EN

Stack Overflow用户

发布于 2013-01-04 05:00:02

当char转换为日期时..。通常是false..because,有些字符不能转换成datetime..and可以overflow..just,比如'2','a‘等等。

你需要一个像“2013-01-04”这样的字符值.它们可以被正确地转换..

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14151262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档