2017-09-01 17 views
0

在我的例子中,我有一個1列日期的表,我插入3個值其中1個爲空。正如你在第一個選擇中看到的那樣,在排序之後,空值會首先出現。在2選擇,雖然我把一個字符串作爲日期先前的空值,然後排序依然是第一個。這是我的查詢,如果你運行它,你會更好地理解這個問題!我也嘗試轉換T-SQL:如何成功將一個空值轉換爲日期類型?

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

不知道你正在努力實現的東西 - 你在哪裏期望/希望出現空值? –

+0

正如你所看到的,我做'ORDER BY日期ASC'所以在投下後,我希望先前的空值被排序爲其他值沒有發生。 – 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 
相關問題