2017-09-01 12 views
0

私の例では、私は1列の日付を持つテーブルを持っていると私は3つの値を挿入1それらのnullです。あなたが最初のselectで見ることができるように、null値はorder byの後に最初に行きます。 2選択では、私は文字列を日付としてキャストしていますが、以前のnull値は注文後に最初に残ります。ここで私の質問ですが、あなたがそれを実行すると問題をよりよく理解できます!おそらくあなたは、式で注文したかった - 私はまた、あなたが日付フィールドによって発注されているすべてのSELECT文でT-SQL:日付型にNull値を正常にキャストする方法

drop table table1 

create table table1(
dates date) 

insert into table1 values ('2017-9-1'),('2017-7-1'),(NULL) 

select dates from table1 ORDER BY dates ASC 

select ISNULL(dates,CAST('2020-04-25T15:50:59.997' AS date))from table1 ORDER BY dates ASC 

select ISNULL(dates, '2017-8-1')from table1 ORDER BY dates ASC 
+0

ではないあなたが達成しようとしているのかわからサブクエリを使用することができます - どこに期待しました/したいのnull値が表示されますか? –

+0

私は 'ORDER BY dates ASC'を見ています。したがって、キャスト後に、以前のnull値を他の値として順序付けしたいとします。 – vicangel

+1

なので、式で注文する必要があります(日付はフィールドで、まだヌル値を含んでいます) - 私の答えを見てください –

答えて

1

を変換しようとしましたか?例えば

select dates from table1 ORDER BY dates ASC 

select dates from table1 ORDER BY ISNULL(dates,CAST('2020-04-25T15:50:59.997' AS date)) ASC 

select dates from table1 ORDER BY ISNULL(dates, '2017-8-1') ASC 

または

select dates from table1 ORDER BY dates ASC 

select ISNULL(dates,CAST('2020-04-25T15:50:59.997' AS date))from table1 
ORDER BY ISNULL(dates,CAST('2020-04-25T15:50:59.997' AS date)) ASC 

select ISNULL(dates, '2017-8-1')from table1 
ORDER BY ISNULL(dates, '2017-8-1') ASC 

か、

SELECT dates from ( 
    SELECT 
    ISNULL(dates,CAST('2020-04-25T15:50:59.997' AS date)) dates 
    FROM table1 
) qry 
ORDER BY dates 
関連する問題