「Datetime」タイプの「NULL」値を含むテーブルがあります。今私はそれらを空の文字列に変換する必要がありますが、変換機能を使用するとき
ISNULL( [Accrued Out of Default] ,'' )
ここでデフォルトに発生するのはdatetime型で、それが行うことはnullを空ではなく '1900-01-01 00:00:00.000'に変更します
次に、それらをvarcharに変換して同じものを適用しようとします
ISNULL(CONVERT(varchar(50), [Amort Into Default] ),'')
今、私は空の文字列に変換することができますが、それらの日付時刻は、日付時刻に必要な文字列に変換されるので、キャスト、変換を試みますが、それらのどれも動作しません。
CONVERT(Datetime,'ISNULL(CONVERT(varchar(50), [Amort Into Default] ),'')',120)
これによりエラーが発生します。
これに可能な解決策はありますか。
> **Solution Hi someone answered this to do as.
> ISNULL(CONVERT(varchar(50), [Amort Into Default] ,120),'') and it works I dont know why .
**
CASEとCASTは動作するはずです:
CASE WHEN mycol IS NULL THEN '' ELSE CONVERT(varchar(50), mycol, 121) END
iSNULLを使用することは、日付でNULLを丸める最良の方法です。
ISNULL(CASE WHEN CONVERT(DATE, YOURDate) = '1900-01-01' THEN '' ELSE CONVERT(CHAR(10), YOURDate, 103) END, '') AS [YOUR Date]
declare @date datetime; set @date = null
--declare @date datetime; set @date = '2015-01-01'
select coalesce( convert( varchar(10), @date, 103 ), '')
これも機能します:
REPLACE(ISNULL(CONVERT(DATE, @date), ''), '1900-01-01', '') AS 'Your Date Field'
私は似たようなものを持っていましたが、ここに私がうまく使ったものの(編集された)バージョンがあります:
ISNULL(CONVERT(VARCHAR(50),[column name goes here],[date style goes here] ),'')
これが機能する理由は次のとおりです。NULLの日付を選択した場合、実際には01900年1月1日として格納されていますが、NULLを返します。これは、日付フィールドでISNULLを使用する理由です。日付データ型を操作している間は、技術的にはこれをNULLとしてnot扱いますNULLとして格納されていません。
ただし、いったん新しいデータ型に変換すると、NULLとして変換されます。その時点で、ISNULLは期待どおりに動作します。
これがあなたにも役立つことを願っています!
〜エリ
更新、ほぼ1年後:
同様の状況で、出力が日付データ型である必要があり、前述のソリューションは機能しませんでした(日付データ型ではなく日付として表示する必要がある場合にのみ機能します)。
日付データ型にする必要がある場合、そこにisそれを回避する方法であり、これはREPLACE
内にISNULL
をネストすることです。
Select
ISNULL(
REPLACE(
[DATE COLUMN NAME],
'1900-01-01',
''
),
'') AS [MeaningfulAlias]
Select isnull(date_column_name,cast('1900-01-01' as DATE)) from table name
select case when IsNull(CONVERT(DATE, StartDate),'')='' then 'NA' else Convert(varchar(10),StartDate,121) end from table1
関数DECODEを使用してみてください
例:デコード(MYDATE、NULL、 ''、MYDATE)
日付がNULLの場合は ''(空白)を表示し、そうでない場合は日付を表示します。
次を試すことができます
mydatetime IS NULL THEN '' else whenの場合にケースを選択する
-- Testing it out could do --
declare @mydatetime datetime
set @mydatetime = GETDATE() -- comment out for null value
--set @mydatetime = GETDATE()
select
case when @mydatetime IS NULL THEN ''
else convert(varchar(20),@mydatetime,120)
end as converted_date
お役に立てれば!