MySQL - 使用' WHERE列LIKE'使用正确的DateTime格式

时间:2017-07-26 08:01:20

标签: c# mysql datetime

我试图为我的MySQL实现搜索功能。在我的应用程序中,我有一个页面,用户从我的数据库中看到一个表。他几乎看到了你在运行SELECT * FROM table

时看到的内容

我的表有整数,字符串和日期时间。我想要的是用户可以在搜索框中键入任何内容,并获取具有用户正在搜索的文本的子字符串的任何行的列表。

首先,我还使用CONCAT来获取表格行中每列的一个大字符串。这是一个例子:

SELECT Name, Fullname FROM myTable WHERE LOWER(CONCAT(Name, ' ', FullName, ' ') LIKE '%M%');

问题:让我说我想要24.04的每条记录。所以我运行以下代码:

SELECT Name, Fullname, Date FROM myTable WHERE Date LIKE '%24.04%';

问题是列Date不是相同的格式。它存储为2008-24-04 12:26:43

我尝试过使用DATE_FORMAT。但它似乎不起作用

SELECT Name, Fullname, Date FROM myTable WHERE LOWER(CONCAT(Name, ' ', Fullname, ' ', DATE_FORMAT(Date, "%d.%l.%Y"), ' ') LIKE '%22.04%');

注意用户应该能够搜索该表中的任何内容。不仅仅是约会。所以我仍然应该使用LIKE '%XYZ%'

我该如何解决这个问题?不允许更改数据库模型上的任何内容。

1 个答案:

答案 0 :(得分:3)

您可以使用DAYMONTH函数:

SELECT Name, Fullname, Date FROM myTable WHERE MONTH(Date) = 4 AND DAY(Date) = 24;

最后一个SELECT可以像这样重写:

SELECT Name, Fullname, Date FROM myTable WHERE LOWER(CONCAT(Name, ' ', Fullname, ' ')) LIKE '%22.04%' AND MONTH(Date) = 4 AND DAY(Date) = 22;

但我不明白为什么要根据日期检查姓名

修改

在你的问题中,你说你试图格式化日期。在格式字符串中出现错误。您使用DATE_FORMAT(Date, "%d.%l.%Y")转换为" day.hour.year"。这应该给出正确的结果:DATE_FORMAT("2017-06-15", "%d.%m.%Y")