2016-09-23 101 views
0

我一直在工作的調度應用程序用了兩個字段:日期和時間。SQL排序日期和時間ASC

用戶從日曆中挑選日期和用戶通過下拉菜單 數據類型是時間:datetime和時間(7)

我想列出的日期和時間ASC。

例如: 我想什麼來實現的。

9/1/2016 8:05 AM 
9/1/2016 9:00 AM 
9/1/2016 10:30 AM 
9/1/2016 11:00 AM 
9/1/2016 2:00 PM 

我收到了什麼。

9/1/2016 2:00 PM 
9/1/2016 8:05 AM 
9/1/2016 9:00 AM 
9/1/2016 10:30 AM 
9/1/2016 11:00 AM 

我試着按兩列日期,時間ASC排序沒有成功。
這將是一個好辦法,能夠在適當的順序列出這些?

+1

您可以使用空格鍵來實現
效果too.Also請你進行標記使用的是像SQLSERVER/oracle的相關RDBMS/.. – TheGameiswar

+0

你需要按升序或降序排列? –

+2

這是發生在客戶端應用程序,它是否將時間轉換爲字符串?這是在查詢中? –

回答

0
-- CONVERT TO DATETIME TO GET 24HR FORMAT 

SELECT CONVERT(DATETIME, '9/1/2016 8:05 AM', 0) 

-- Concatenate in required format 

SELECT CONVERT(VARCHAR(10), CONVERT(DATETIME, '9/1/2016 8:05 AM', 0), 101) 
+ ' '+ CONVERT(VARCHAR(5),CONVERT(DATETIME, '9/1/2016 8:05 AM', 0), 108) 

然後嘗試按需要由ASC或DESC進行訂購。

More details here

+0

轉換爲24小時字符串格式可能不被OP是需要的,如果你想通過日期訂購如果數據類型是日期/日期時間只需ASC或DESC會做同樣的事情,無需轉換,沒有必要。此外,如果您要從其他帖子發佈確切答案,則應將問題標記爲重複並對其進行評論。 – Matt

0

我已經準備了一個例子,以滿足您的要求, 請檢查並讓我知道是否有變化所需

declare @tbl as table 
(
dt datetime 
,tm time(7) 
) 

insert into @tbl 
select '2001-02-01','12:00:00' 

insert into @tbl 
select '2001-01-02','13:00:00' 

insert into @tbl 
select '2001-01-01','15:00:00' 


select convert(varchar(10),dt,101)+' '+ right(convert(varchar(25),tm,100),7) from @tbl 
order by dt,tm 
+0

你怎麼知道T.J.正在使用SQL Server? –

+0

標記爲「sql,date,datetime」。但不知道爲什麼我說我創造了一個例子。 –

+0

標記'sql'指查詢語言SQL。標籤'sql-server'是指來自Microsoft的DBMS產品。 –

0

嘗試使用下面的查詢,如果您正在使用SQL Server。

SELECT * 
FROM Yourtable 
ORDER BY [date],cast([Time] as time(7)) 
+0

更新..順便提一下,問題由T.J提出(不是muthu ..) –