SQL Server 2014中的日期转换问题

时间:2016-05-21 06:33:14

标签: sql sql-server tsql sql-server-2014

TriggerDate类型的列varchar(50)。它以MM/dd/yyyy格式存储值(例如:2016年5月21日)。

此表中有10条记录的日期为2016年5月21日

当我运行此查询时

select * 
from Analytics 
where convert(date, TriggerDate) = '2016-05-21'

我在结果标签中显示结果,但消息标签显示此错误

  

Msg 241,Level 16,State 1,Line 1
  从字符串转换日期和/或时间时转换失败。

然而,当我跑

select top 10 * 
from Analytics 
where convert(date, TriggerDate) = '2016-05-21'

没有错误

执行select CONVERT(date,'05/21/2016')会返回2016-05-21,但没有错误。

令我感到困惑的是:前10名如何有所作为,它正在我的登台服务器上运行SQL Server 2014.

我该如何解决这个问题?

在Windows Server 2012 R2中使用SQL Server 2014,系统日期的格式为5/21/2016

2 个答案:

答案 0 :(得分:3)

SQL Server将字符串转换为日期

SELECT convert(datetime, '10/23/2016', 101) -- mm/dd/yyyy
SELECT convert(datetime, '2016.10.23', 102) -- yyyy.mm.dd ANSI date with century
SELECT convert(datetime, '23/10/2016', 103) -- dd/mm/yyyy
SELECT convert(datetime, '23.10.2016', 104) -- dd.mm.yyyy
SELECT convert(datetime, '23-10-2016', 105) -- dd-mm-yyyy

试试这个

答案 1 :(得分:0)

使用以下查询可能会对您有所帮助。

select * 
from Analytics 
where convert(varchar(10), cast(TriggerDate as date), 102) = '2016.05.21'