我在这里有一个查询,
SELECT MIN(DATE) FROM tableA
此处,如果日期值为Null,则应显示“NA”,
SELECT isnull(convert(varchar(10),MIN(DATE)),'NA') FROM tableA
适用于MIN(DATE)的情况为空,但如果它不为null,则输出的格式不同,如May 11
等,我该怎样解决这个问题?
答案 0 :(得分:2)
SQL Server不存储日期/时间值的格式,它们存储为整数。
CONVERT()
有第三个参数,用于定义日期类型输出的格式(内置)。默认值取决于您的配置和服务器设置
BOL中的更多信息:https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql
SELECT COALESCE(CONVERT(VARCHAR(10), MIN([date]), 120), 'NA') FROM tableA
或者,您可以在较新版本(2012+)中使用FORMAT
来指定自定义格式。
再次,BOL中的更多信息:https://docs.microsoft.com/en-us/sql/t-sql/functions/format-transact-sql
SELECT COALESCE(FORMAT(MIN([date]), 'yyyy-MM-dd'), 'NA') FROM tableA
答案 1 :(得分:1)
Declare @day TABLE ([DATE] DATE)
INSERT INTO @day
SELECT '2017-02-04' Union all
SELECT '2017-05-05' Union all
SELECT NULL Union all
SELECT '2017-06-06' Union all
SELECT '2017-08-08'
SELECT [DATE],ISNULL(NULLIF(CONVERT(varchar(10),MIN([DATE])),'1900-01-01'),'NA') as ConvertedColumn from @day
GROUP by [DATE]
OutPut显示日期列是否包含最小日期值为Null,然后显示AS'NA'并显示表中的下一个最小日期值
DATE |ConvertedColumn
----------------------------
NULL | NA
2017-02-04 |2017-02-04
2017-05-05 |2017-05-05
2017-06-06 |2017-06-06
2017-08-08 |2017-08-08