如何从存储过程返回空字段

时间:2018-07-26 23:32:56

标签: sql-server

我正在处理必须返回一些日期的存储过程。在某些记录上,有一个没有数据的字段(日期时间字段),并且在执行存储过程时,该字段返回的格式如下:

01/01/1900 12:00:00 a. m.

我想做的是返回一个空字段。我尝试过:

ISNULL(InvoiceDate, '') as DateOfRecord

但是它不起作用。

4 个答案:

答案 0 :(得分:0)

声明一个变量并将其设置为null值,然后将其返回,如:

DECLARE @mydate datetime
SET @mydate=null
SELECT @mydate --returns NULL

答案 1 :(得分:0)

如果您想在日期为null时返回null,请尝试CASE

SELECT CASE WHEN InvoiceDate  IS NULL THEN NULL ELSE InvoiceDate END as DateOfRecord

答案 2 :(得分:0)

使用substring函数并剪切第一个11个字符(如果连续的话),返回01/01/1900 use然后为

case when substring(InvoiceDate,0,11)='01/01/1900' then null else InvoiceDate end 


substring('01/01/1900 12:00:00 a. m.',0,11) it will return 01/01/1900

答案 3 :(得分:0)

在内部,SQL Server将DateTime数据存储为数字。当该数字为零时,将被解释为01/01/1900 12:00:00 AM

在您的情况下,我认为您存储在该DateTime字段中的值是零,因此当您查询它时,您会看到结果。

最简单的处理方法可能是在查询中使用CASE表达式:

SELECT CASE WHEN CONVERT(DATE, InvoiceDate) = '1900-01-01' THEN NULL
            ELSE InvoiceDate
       END  as DateOfRecord