2017-05-03 3 views
0
ここ

私は、クエリを持っていた、日付の値がnullの場合、それは 'NA' を表示する必要があります。ここdateがNULLの場合は 'NA'、nullでない場合はdatetime形式の出力を取得する方法は?

SELECT MIN(DATE) FROM tableA 

SELECT isnull(convert(varchar(10),MIN(DATE)),'NA') FROM tableA 

それはケースMIN(DATE)のために働いていたがnullであるが、それがnullでない場合、出力はMay 11などのような異なるフォーマットになっています。これをどのように修正できますか?

+0

どの形式を使用しますか?あなたはあなたの問題ではなく、 'NA'としてタイトルを更新する必要があります:) – Joby

+0

また、これを見て、あなたは[SQL Date Formats](http://www.sql-server-helper。 com/sql-server-2008/sql-server-2008-date-format.aspx) – Joby

答えて

2

SQL Serverは、日付/時刻値の形式を格納しません。整数として格納されます。

CONVERT()には、日付型の出力形式(組み込み)を定義する3番目のパラメータがあります。デフォルトでは、設定とサーバーの設定に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
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] 

出力はヌルが、それは「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 
関連する問題