我正在处理必须返回一些日期的存储过程。在某些记录上,有一个没有数据的字段(日期时间字段),并且在执行存储过程时,该字段返回的格式如下:
01/01/1900 12:00:00 a. m.
我想做的是返回一个空字段。我尝试过:
ISNULL(InvoiceDate, '') as DateOfRecord
但是它不起作用。
答案 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