【发布时间】:2018-10-30 23:40:28
【问题描述】:
大家早上好。我进行了很好的搜索,但找不到答案(或我能理解的答案)
我有一个存储过程,想返回一个日期作为查询的一部分,但是如果没有记录 (NULL),则返回一些友好的内容,例如“无计划库存”
我有这个
ISNULL(MIN(wt.CompletionDate),'No Planned Stock') AS NextStockIn
这会导致以下错误
从字符串转换日期和/或时间时转换失败。
但是这一半有效(有一半有效吗?)
MIN(ISNULL(wt.CompletionDate,'No Planned Stock')) AS NextStockIn
问题是我仍然得到 NULL 而不是“无计划库存”
在理想世界中,id 像 nicley 格式 (dd/MM/yyyy) 日期或“无计划库存”
非常感谢您对此的任何帮助,在此先感谢您。
【问题讨论】:
-
我很惊讶它完全有效。如果您将
wt.CompletionDate存储为date/datetime,那么文字字符串'No Planned Stock'将被隐式转换为date/datetime。显然,'No Planned Stock'不是日期。我建议将NULL返回到您的表示层并在那里更改NULL值。否则您将不得不将CONVERT的值wt.CompletionDate更改为varchar,这意味着您会丢失数据类型(这可能会导致其他问题)。 -
在我上面的 cmets 之外,数据的格式化(比如日期到
dd/MM/yyyy)是最应该在表示层完成的事情。 -
感谢 Larnu 在表示层我使用 "=IIF(((ReportItems!Textbox72.Value)
-
我假设这是一个 SSRS 表达式。值为
NULL的日期没有小于0 的值,因此该表达式永远不会为真。文本框的正确表达式可能类似于:=IIf(IsNothing(Fields!CompletionDate.Value) = False,Fields!CompletionDate.Value,"No Planned Stock")。然后,您还需要设置文本框的格式。您可以通过选择文本框并按F4来完成此操作。然后在属性窗格中找到格式属性,并将其更改为dd/MM/yyyy。值"No Planned Stock"的格式不会错误。 -
这是一个 SSRS 表达式,
标签: sql-server reporting-services min isnull