Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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中的按日期排序未正确显示_Sql Server_Date - Fatal编程技术网

Sql server SQL Server中的按日期排序未正确显示

Sql server SQL Server中的按日期排序未正确显示,sql-server,date,Sql Server,Date,我想将我的表查看为按日期排序的 我已经写了这个命令 select * from companydetails order by date desc 输出: 2013年4月1日30-11-16 30-11-16 29-11-16 28-11-16 27-09-16 27-01-2014 26-11-16 26-07-14 24-02-15 23-09-15 23-03-15 21-10-15 21-01-16 20-08-15 18-11-15 18-03-15 17-08-16 17-0

我想将我的表查看为按日期排序的

我已经写了这个命令

select * 
from companydetails 
order by date desc
输出:

2013年4月1日30-11-16 30-11-16 29-11-16 28-11-16 27-09-16 27-01-2014 26-11-16 26-07-14 24-02-15 23-09-15 23-03-15 21-10-15 21-01-16 20-08-15 18-11-15 18-03-15 17-08-16 17-04-14 16-09-14 15-02-14 15-02-14 15-02-14 15-02-14 15-02-14 15-02-14 15-02-14 14-11-14 14-08-14 12-02-14 12-01-2013 11-03-16 09-10-15 08-12-15 06-01-16 04-01-2013 03-01-14 02-10-15 02-09-14 02-09-14 01-12-15 01-12-14 01-12-14 01-10-15 01-10-15 01-10-14 01-09-15 01-09-15 01-09-14 01-09-14 01-09-14 01-09-14 01-08-15 01-08-14 01-08-14 01-07-15 01-06-15 01-06-15 01-04-2014 01-04-14 01-04-14 01-04-14 01-04-14 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-03-16 01-03-14 01-03-14 01-02-16 01-02-15 01-01-01-15 01-01-15 01-01-01-14空

这不是我需要的,这只是订购日,我在网上搜索了一下,发现了这一点

SELECT * 
FROM 
     companydetails 
ORDER BY 
   CONVERT(DateTime, date,105)  DESC
但这是一个错误

从字符串转换日期时间时转换失败


当我选择修改我的表格时,我发现我的上级创建日期为
nvarchar(50)
我现在需要做什么?

正如您在评论中提到的,您已经意识到您的
日期
字段位于
nvarchar

您现在需要关注以下几点:

  • 是否有任何应用程序/网站/报告读/写此表?
    • 如果是:除非您可以控制所有源代码,否则修改数据库将非常繁琐
    • <如果没有:考虑将您的代码>日期<代码>字段迁移到<代码>日期时间> /代码>数据类型。
  • 是否要迁移
    date
    字段的数据类型?
    • 如果是:
      date
      字段中的日期格式不一致。您需要找到它的位置,将其更新为1且仅为1格式(yy-MM-dd或yyyy-MM-dd)或任何对您更合适的格式。然后,您可以将此字段转换为
      DateTime
      数据类型
    • 如果否:即使您的数据是一致的,在安排时也不会遵循日期-时间顺序,而是遵循字母顺序,这有时会在某个地方给您错误的顺序。 因此,要使用此
      CONVERT(DateTime,date,105)DESC
      ,您需要先将数据编辑为相同的格式。例如,我可以看到这两条记录不一致:
      01-06-15
      &
      01-04-2014

  • 假设您更改了列中的数据,并使其与注释中所述的一致。 然后试试这个:-

    SELECT CAST(Column_Name as datetime2(7)) from tablename;
    

    因为用于存储日期时间的数据类型是NVARCHAR。 为此,可以将其转换为日期或日期时间

    select * from companydetails order by CAST(date as DATE) desc
    
    根据SQL Server的要求,用于存储的日期格式不一致

    从您的输出中: 30-11-16是日期的一种格式。不是以MM-DD-YYYY的格式

    01-04-13是另一种格式。尽管现在这是一个有效的格式,但它会将其视为1月4日,而不是4月1日的预期值(我假设)

    服务器在30-11-16抛出一个错误,因为它采用的格式是MM-DD-YYYY(但30不是有效月份,因此是您的错误)

    因此,您需要遵循这个特定的日期格式,然后使用上面的查询


    希望这有帮助。

    我认为您应该将日期存储为
    datetime
    而不是
    varchar
    。我知道,但我的上级使用nvarchar存储日期,现在我面临的问题是same@InformationHTI:您的日期格式也不一致。如果我将所有日期都设置为01-02-14这样,那么我可以做我想做的吗?这是哪个版本的sql server?