gpt4 book ai didi

sql-server - 如何在 SQL Server 中对小时数进行排序?

转载 作者:行者123 更新时间:2023-12-05 01:45:38 26 4
gpt4 key购买 nike

我有一个名为 Transaction 的表。在该列中,找到了具有 TimeStamp 数据类型的 Time 列。

所以数据看起来像 2015-01-17 08:12:48.000

我想显示为 8 am

例如

`2015-01-17 08:12:48.000`  `8 AM`
`2015-01-17 14:12:48.000` `2 PM`

现在我得到了如上的结果。这是我的结果

Hour
----
01 PM
02 PM
04 PM
05 PM
06 PM
07 AM
07 PM
08 AM
09 AM
10 AM
11 AM
12 PM

这是对上述结果的查询。

SELECT
FORMAT(CAST(Time as datetime),'hh tt') hour,
COUNT(TransactionNumber) Total_Transaction,
SUM(Total) salesCost
FROM
[HQMatajer].[dbo].[Transaction]
WHERE
StoreID = '1001'
AND YEAR(Time) = '2015'
AND MONTH(Time) = '01'
AND DAY(Time) = '15'
GROUP BY
FORMAT(CAST(Time as datetime),'hh tt')`

现在我想对时间进行排序。它应该显示为

07 AM
08 AM
09 AM
10 AM
11 AM
12 PM
01 PM
02 PM
.
.
07 PM

谢谢

最佳答案

尝试将此添加到语句的末尾:

, convert(varchar(2), [time], 8)
order by convert(varchar(2), [time], 8)

结果是:

SELECT
FORMAT(CAST(Time as datetime),'hh tt') hour,
COUNT(TransactionNumber) Total_Transaction,
SUM(Total) salesCost
FROM
[HQMatajer].[dbo].[Transaction]
WHERE
StoreID = '1001'
AND YEAR(Time) = '2015'
AND MONTH(Time) = '01'
AND DAY(Time) = '15'
GROUP BY
FORMAT(CAST(Time as datetime),'hh tt')
, convert(varchar(2), [time], 8)
order by convert(varchar(2), [time], 8)

convert(varchar(2),[time],8) 返回样式为 8 的日期时间,格式如下:hh:mi:ss,并使用 varchar(2) 将其截断为 hh

convert and styles 的文档.

正如 Shakeer Mirza 所说,使用 datepart() 也可以。

datepart 的文档.

关于sql-server - 如何在 SQL Server 中对小时数进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41086745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com