2016-09-23 133 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 ..) –