数据示例:
AtrxId AtrxDate AtrxTime AtrxDes
------------------------------------------
CAS-000001 05-03-2018 12:43 PM Cash
INV-000001 05-03-2018 11:04 AM Credit
我需要根据特定日期的时间排序输出:
AtrxId AtrxDate AtrxTime AtrxDes
-----------------------------------------
INV-000001 05-03-2018 11:04 AM Credit
CAS-000001 05-03-2018 12:43 PM Cash
答案 0 :(得分:2)
1)为什么它是nvarchar?只是问......这可能会给你造成许多问题,除非你需要它是nvarchar,因为它有时需要接受无效的日期。
这应该有效。这假设AtrxDate和AtrxTime都是nvarchar。它还假定字段中始终存在有效的日期和时间。如果其中一个无效,那么TRY_CONVERT将返回null,这基本上意味着它们将首先排序:
SELECT
AtrxId
, AtrxDate
, AtrxTime
, AtrxDes
FROM tablenamehere t
ORDER BY TRY_CONVERT(AtrxDate + ' ' + AtrxTime AS datetime) DESC
我不确定您是否希望按日期/时间按顺序列出前向或后向顺序(示例按正向顺序列出,但问题的主题行显示为DESC),但如果您希望按顺序排列,则为只需用ASC替换DESC即可。 :)
答案 1 :(得分:0)
您可以尝试以下查询。根据您的分类要求,输入“ASC
”或“DESC
”
DECLARE @TABLE TABLE (AtrxId VARCHAR(100), AtrxDate DATE, AtrxTime TIME, AtrxDes VARCHAR(100))
INSERT INTO @TABLE
SELECT 'CAS-000001', '05-03-2018', '12:43 PM', 'Cash' UNION ALL SELECT 'INV-000001','05-03-2018','11:04 AM','Credit'
SELECT * FROM @TABLE ORDER BY AtrxDate,AtrxTime
或者您可以尝试以下select
查询
SELECT * FROM @TABLE ORDER BY CONVERT(DATETIME, CONVERT(CHAR(8), AtrxDate, 112)
+ ' ' + CONVERT(CHAR(8), AtrxTime, 108))