Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何根据描述对SQL Server中的nvarchar时间值进行排序_Sql Server_Database - Fatal编程技术网

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.:)

根据您的输出,需要升序排序,但您的问题标题是降序的。请澄清。根据您的输出,需要升序排序,但您的问题标题是降序的。请澄清。