首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从字符串转换日期和/或时间时,SQL转换失败

问从字符串转换日期和/或时间时,SQL转换失败
EN

Stack Overflow用户
提问于 2015-06-01 16:02:45
回答 2查看 3.4K关注 0票数 0

我试图在表中设置一个列,如果DB中的列的日期值为NULL,则该列将声明“no”。如果列有日期值,那么我想要显示它。此SQL全部位于SPROC中,然后将这些值传递给应用程序。

DB值的类型为DATETYPE,NULL。

​

​

以下是我迄今所尝试过的

代码语言:javascript
复制
,CASE WHEN [TB_EVNTEXP].[StartDate] IS NULL THEN 'no date set' ELSE [TB_EVNTEXP].[StartDate] END AS [expiry]

结果:

​

,合并(强制转换(空作为日期时间),“无日期集”),TB_EVNTEXP.StartDate作为到期。

结果会产生转换错误。

这是可行的,但在我的表中所有的空值都是空的。

代码语言:javascript
复制
,[TB_EVNTEXP].StartDate]                    AS [cardexpiry]

现在花了很多时间在这个问题上,可以用一只有用的手来完成:)

干杯保罗

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-01 16:24:55

您似乎在使用SQL Server,它不允许将字符串与日期格式混合使用。

试试这个:

代码语言:javascript
复制
SELECT CASE WHEN [TB_EVNTEXP].[StartDate] IS NULL THEN '' ELSE [TB_EVNTEXP].[StartDate] END AS [expiry] 
FROM 

或者,您需要将日期转换为varchar,以便将其与空值混合:

代码语言:javascript
复制
SELECT CASE WHEN [TB_EVNTEXP].[StartDate] IS NULL THEN 'not set' ELSE CONVERT(VARCHAR, [TB_EVNTEXP].[StartDate]) END AS [expiry] 
FROM 
票数 3
EN

Stack Overflow用户

发布于 2015-06-01 16:24:58

这就是您的错误发生的地方:

代码语言:javascript
复制
COALESCE(CAST(NULL AS DATETIME), 'no date set'), 

这在逻辑上是一样的,并且运行。

代码语言:javascript
复制
 COALESCE(NULL, 'no date set'), 

或者更好,

代码语言:javascript
复制
'no date set'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30578085

复制
相关文章

相似问题

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