2017-05-03 4 views
0

Hier hatte ich eine Abfrage,Wie wird die Ausgabe als 'NA' ausgegeben, wenn das Datum Null ist und das Datum/Uhrzeit-Format nicht Null ist?

SELECT MIN(DATE) FROM tableA 

Hier Wenn das Datum Wert Null ist, dann sollte es 'NA' angezeigt werden,

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

Es für den Fall, MIN (DATE) gearbeitet ist null, aber Wenn es nicht null ist, bekommt die Ausgabe ein anderes Format wie May 11 usw. Wie kann ich das beheben?

+0

Welches Format möchten Sie das Ergebnis? Außerdem musst du den Titel als "NA" nicht dein Problem aktualisieren :) – Joby

+0

Sieh dir das auch an, du könntest es vielleicht selbst lösen [SQL Date Formats] (http: //www.sql-server-helper. com/sql-server-2008/sql-server-2008-datumsformat.aspx) – Joby

Antwort

2

SQL Server speichert das Format der Datum/Uhrzeit-Werte nicht, sie werden als Ganzzahlen gespeichert.

CONVERT() hat einen dritten Parameter, der das Format (eingebaut) der Ausgabe für Datumstypen definiert. Die Standardeinstellung ist abhängig von der Konfiguration und Servereinstellungen

Mehr Informationen in 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 

Alternativ können Sie FORMAT in neueren Versionen (2012+) verwenden, um ein benutzerdefiniertes Format angeben.

Auch hier weitere Informationen in 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] 

Ausgabe zeigt das, wenn die Datumsspalte enthält Mindestdatumswert als Null, dann zeigt es, AS ‚NA‘ und zeigt neben Mindestdatumswerte aus der Tabelle

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 
Verwandte Themen