Select * From Tab_A Where Tab_A.rq like '2002-04-16'
使用 LIKE 的模式匹配 当搜索 datetime 值时,推荐使用 LIKE,因为 datetime 项可能包含各种日期部分。例如,如果将值 19981231 9:20 插入到名为 arrival_time 的列中,则子句 WHERE arrival_time = 9:20 将无法找到 9:20 字符串的精确匹配,因为 SQL Server 将其转换为 1900 年 1 月 1 日上午 9:20。然而,子句 WHERE arrival_time LIKE '%9:20%' 将找到匹配。LIKE 支持 ASCII 模式匹配和 Unicode 模式匹配。当所有参数,包括 match_expression、pattern 和 escape_character(如果有)都是 ASCII 字符数据类型时,将执行 ASCII 模式匹配。如果其中任何参数属于 Unicode 数据类型,则所有参数将被转换为 Unicode 并执行 Unicode 模式匹配。当对 Unicode 数据(nchar 或 nvarchar 数据类型)使用 LIKE 时,尾随空格是有意义的。但是对于非 Unicode 数据,尾随空格没有意义。Unicode LIKE 与 SQL-92 标准兼容。ASCII LIKE 与 SQL Server 的早期版本兼容。下面的一系列示例显示 ASCII LIKE 模式匹配与 Unicode LIKE 模式匹配所返回的行之间的差异:-- ASCII pattern matching with char column CREATE TABLE t (col1 char(30)) INSERT INTO t VALUES ('Robert King') SELECT * FROM t WHERE col1 LIKE '% King' -- returns 1 row-- Unicode pattern matching with nchar column CREATE TABLE t (col1 nchar(30)) INSERT INTO t VALUES ('Robert King') SELECT * FROM t WHERE col1 LIKE '% King' -- no rows returned-- Unicode pattern matching with nchar column and RTRIM CREATE TABLE t (col1 nchar (30)) INSERT INTO t VALUES ('Robert King') SELECT * FROM t WHERE RTRIM(col1) LIKE '% King' -- returns 1 row说明 如果使用 LIKE 进行字符串比较,模式字符串中的所有字符都有意义,包括起始空格或尾随空格。
Select * From Tab_A Where Tab_A.rq like '2002-04-16%'
foolishchao(傻超)方法好,这样可以比较查询。
我试过了,foolishchao朋友的方法也不行,但根据他的方法改成 Select * From Tab_A Where rq>= convert(datetime,'2002-04-16') and rq<convert(datetime,'2002-04-17') 就行了,我不知为什么?不是说SQL SERVER会自动转换数据类型的吗? 还有fanpingli朋友的方法也是过了,也不行。 不过还是很谢谢你们!
Select * From Tab_A Where Tab_A.rq = '2002-04-16' 难道不可以吗?就是两边加上单引号. 我机器上的sql server删掉了,所以不能调试。
From Tab_A
Where Tab_A.rq like '2002-04-16'
当搜索 datetime 值时,推荐使用 LIKE,因为 datetime 项可能包含各种日期部分。例如,如果将值 19981231 9:20 插入到名为 arrival_time 的列中,则子句 WHERE arrival_time = 9:20 将无法找到 9:20 字符串的精确匹配,因为 SQL Server 将其转换为 1900 年 1 月 1 日上午 9:20。然而,子句 WHERE arrival_time LIKE '%9:20%' 将找到匹配。LIKE 支持 ASCII 模式匹配和 Unicode 模式匹配。当所有参数,包括 match_expression、pattern 和 escape_character(如果有)都是 ASCII 字符数据类型时,将执行 ASCII 模式匹配。如果其中任何参数属于 Unicode 数据类型,则所有参数将被转换为 Unicode 并执行 Unicode 模式匹配。当对 Unicode 数据(nchar 或 nvarchar 数据类型)使用 LIKE 时,尾随空格是有意义的。但是对于非 Unicode 数据,尾随空格没有意义。Unicode LIKE 与 SQL-92 标准兼容。ASCII LIKE 与 SQL Server 的早期版本兼容。下面的一系列示例显示 ASCII LIKE 模式匹配与 Unicode LIKE 模式匹配所返回的行之间的差异:-- ASCII pattern matching with char column
CREATE TABLE t (col1 char(30))
INSERT INTO t VALUES ('Robert King')
SELECT *
FROM t
WHERE col1 LIKE '% King' -- returns 1 row-- Unicode pattern matching with nchar column
CREATE TABLE t (col1 nchar(30))
INSERT INTO t VALUES ('Robert King')
SELECT *
FROM t
WHERE col1 LIKE '% King' -- no rows returned-- Unicode pattern matching with nchar column and RTRIM
CREATE TABLE t (col1 nchar (30))
INSERT INTO t VALUES ('Robert King')
SELECT *
FROM t
WHERE RTRIM(col1) LIKE '% King' -- returns 1 row说明 如果使用 LIKE 进行字符串比较,模式字符串中的所有字符都有意义,包括起始空格或尾随空格。
From Tab_A
Where Tab_A.rq like '2002-04-16%'
Select *
From Tab_A
Where rq>= convert(datetime,'2002-04-16') and rq<convert(datetime,'2002-04-17')
就行了,我不知为什么?不是说SQL SERVER会自动转换数据类型的吗?
还有fanpingli朋友的方法也是过了,也不行。
不过还是很谢谢你们!
From Tab_A
Where Tab_A.rq = '2002-04-16'
难道不可以吗?就是两边加上单引号.
我机器上的sql server删掉了,所以不能调试。