SQL datetime LIKE选择 - 为什么我需要额外的%?

tom*_*989 1 sql t-sql datetime

有人可以向我解释为什么当我LIKEvarchar列上执行SQL(T-SQL)选择时,我可以执行以下操作:

SELECT *
  FROM Table
  WHERE Name LIKE 'Th%'
Run Code Online (Sandbox Code Playgroud)

以名字开头Th,但是当我在一个datetime列上做同样的事情时,我需要%在一年之前,例如:

SELECT *
  FROM Table
  WHERE Date LIKE '%2013%'
Run Code Online (Sandbox Code Playgroud)

在2013年获取日期.日期时间以yyyy-MM-dd hh:mm:ss格式存储.我知道我可以使用DATEPART样式查询但我只是感兴趣为什么我需要额外的%这里.

TT.*_*TT. 5

在比较之前,DATETIME被转换为VARCHAR,并且绝对不能保证转换将采用您提到的模式.DATETIME不在内部存储为VARCHAR,而是存储为FLOAT.