Sql server 如何根据描述对SQL Server中的nvarchar时间值进行排序
数据示例:Sql server 如何根据描述对SQL Server中的nvarchar时间值进行排序,sql-server,database,Sql Server,Database,数据示例: 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 ----------------
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
您可以尝试以下查询。根据您的分拣要求,放入“
ASC
”或“DESC
”
或者您可以尝试以下选择查询
SELECT * FROM @TABLE ORDER BY CONVERT(DATETIME, CONVERT(CHAR(8), AtrxDate, 112)
+ ' ' + CONVERT(CHAR(8), AtrxTime, 108))
您可以尝试以下查询。根据您的分拣要求,放入“ASC
”或“DESC
”
或者您可以尝试以下选择查询
SELECT * FROM @TABLE ORDER BY CONVERT(DATETIME, CONVERT(CHAR(8), AtrxDate, 112)
+ ' ' + CONVERT(CHAR(8), AtrxTime, 108))
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),但如果您希望按向前顺序列出,则只需将DESC替换为ASC.:) 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),但如果您希望按向前顺序列出,则只需将DESC替换为ASC.:) 根据您的输出,需要升序排序,但您的问题标题是降序的。请澄清。根据您的输出,需要升序排序,但您的问题标题是降序的。请澄清。