SELECT all_data 哪里 value_in_column 喜欢 specific_string
SELECT all_data WHERE value_in_column LIKE specific_string
我有一个 MySQL 数据库和一个 table,其中包含特定车辆在许多不同日期的大量数据。在此 table 中有一个名为 time_stamp
的列,其中包含数据的获取日期,如下所示:
ID UnitID time_stamp data more_data
0 56 2016-08-10 12:01 asdf 12
1 57 2016-08-09 11:19 ghjk 34
2 57 2016-08-09 9:35 qwer 56
3 58 2016-08-09 1:16 tyui 78
我想 select table 中 UnitID LIKE 57
和 time_stamp LIKE 2016-08-09%
中的所有内容,以便 return:
ID UnitID time_stamp data more_data
1 57 2016-08-09 11:19 ghjk 34
2 57 2016-08-09 9:35 qwer 56
我已经尝试 SELECT * FROM table_name WHERE time_stamp LIKE 2016-08-09% AND UnitID LIKE 57;
,但我一直收到 Error Code: 1054
告诉我有一个 unknown column in 'where clause'
。我对 MySQL 还是很陌生,但我通常可以在 MySQL Docs, however this one I cannot figure out. I have also looked for similar questions like this one here 的帮助下弄清楚我需要做什么,但我发现的任何东西都无法完全完成我想要的。
LIKE
用于字符串匹配,因此与更合适的运算符相比相对较慢。使用 WHERE 这样的查询会更好:
WHERE UnitID = 57 AND time_stamp BETWEEN '2016-08-09 00:00:00' AND '2016-08-09 23:59:29'
也就是说,MySQL 对您提出的查询的主要反对意见可能是您没有将 2016-08-09%
括在引号中。
此处不需要 LIKE
子句。试试这个:
SELECT * FROM table_name
WHERE
time_stamp >= Convert(datetime,'2016-08-09')
AND
time_stamp < Convert(datetime,'2016-08-10')
AND
UnitID = 57
我认为此查询不需要 LIKE
,因为您要查找的数据不是 TEXT
、VARCHAR
或 CHAR
数据。尝试在您的谓词中这样做:
WHERE UnitID = 57 AND DATE(time_stamp) = '2016-08-09'
我有一个 MySQL 数据库和一个 table,其中包含特定车辆在许多不同日期的大量数据。在此 table 中有一个名为 time_stamp
的列,其中包含数据的获取日期,如下所示:
ID UnitID time_stamp data more_data
0 56 2016-08-10 12:01 asdf 12
1 57 2016-08-09 11:19 ghjk 34
2 57 2016-08-09 9:35 qwer 56
3 58 2016-08-09 1:16 tyui 78
我想 select table 中 UnitID LIKE 57
和 time_stamp LIKE 2016-08-09%
中的所有内容,以便 return:
ID UnitID time_stamp data more_data
1 57 2016-08-09 11:19 ghjk 34
2 57 2016-08-09 9:35 qwer 56
我已经尝试 SELECT * FROM table_name WHERE time_stamp LIKE 2016-08-09% AND UnitID LIKE 57;
,但我一直收到 Error Code: 1054
告诉我有一个 unknown column in 'where clause'
。我对 MySQL 还是很陌生,但我通常可以在 MySQL Docs, however this one I cannot figure out. I have also looked for similar questions like this one here 的帮助下弄清楚我需要做什么,但我发现的任何东西都无法完全完成我想要的。
LIKE
用于字符串匹配,因此与更合适的运算符相比相对较慢。使用 WHERE 这样的查询会更好:
WHERE UnitID = 57 AND time_stamp BETWEEN '2016-08-09 00:00:00' AND '2016-08-09 23:59:29'
也就是说,MySQL 对您提出的查询的主要反对意见可能是您没有将 2016-08-09%
括在引号中。
此处不需要 LIKE
子句。试试这个:
SELECT * FROM table_name
WHERE
time_stamp >= Convert(datetime,'2016-08-09')
AND
time_stamp < Convert(datetime,'2016-08-10')
AND
UnitID = 57
我认为此查询不需要 LIKE
,因为您要查找的数据不是 TEXT
、VARCHAR
或 CHAR
数据。尝试在您的谓词中这样做:
WHERE UnitID = 57 AND DATE(time_stamp) = '2016-08-09'