如何使用日期时间列上的like运算符在mysql中搜索数据

如何使用日期时间列上的like运算符在mysql中搜索数据,mysql,Mysql,我正在创建MySQL查询,在这里我需要使用like运算符从按列创建的_中查找数据(具有datetime数据类型) 我提出了以下问题: SELECT `order_id`,`order_no`,`name`,`email`,`created_at` FROM orders WHERE DATE_FORMAT(created_at,'%Y-%m-%d %H:%i')=DATE_FORMAT('2021-02-23 17:37:28','%Y-%m-%d %H:%i') 但我想用like运算符搜索数

我正在创建MySQL查询,在这里我需要使用like运算符从按列创建的_中查找数据(具有datetime数据类型)

我提出了以下问题:

SELECT `order_id`,`order_no`,`name`,`email`,`created_at` FROM orders WHERE
DATE_FORMAT(created_at,'%Y-%m-%d %H:%i')=DATE_FORMAT('2021-02-23 17:37:28','%Y-%m-%d %H:%i')
但我想用like运算符搜索数据 比如说

  • 如果我在“2021-02”这样的日期通过created_,那么它应该会给出与此相关的所有结果
  • 如果我在“2021-02-23 17”这样的日期通过了created_,那么它应该会给出与此相关的所有结果
  • 如果我在“2021-”这样的日期通过created_,那么它应该会给出与此相关的所有结果
  • 如果我在“2021-”这样的日期通过created_,那么它应该会给出与此相关的所有结果。 还有很多这样的组合
  • 我尝试了此查询,它返回了预期结果

    *SELECT `order_id`,`order_no`,`name`,`email`,`created_at` FROM orders WHERE
    created_at LIKE '2021-02-23 17:37:28'*
    
    输出:

    但如果我尝试此查询,则无法获得预期结果,因为它返回0行

    SELECT `order_id`,`order_no`,`name`,`email`,`created_at` FROM orders WHERE
    created_at LIKE '2021-02-23 17:37:'
    
    输出:

    请查找下表脚本以重新生成问题。 (您可以将所提供数据中的任何可用日期放入created_by列)


    由于我在MySQL方面的知识有限,所以你们的帮助将有助于提高我自己,谢谢

    Mysql可以识别日期,如果您编写的格式正确的话

    所以你可以用一个简单的=

    LIKE只适用于字符串

    如果[functions][1]中有很多关于日期和时间的信息,我相信您会找到正确的方法来获取订单

    订单号|订单号|姓名|电子邮件|创建地址| -------: | :------- | :--------- | :------------ | :------------------ 1 | 202102 | 23038 | pqr@gmail.com | 2021-02-23 17:37:28 2 | 202102 | 22166638 | abc@gmail.com | 2021-02-23 17:37:28 3 | 202133 | 2202166638 | def@gmail.com | 2021-02-23 17:37:28 4 | 202044 | 2302166638 | jkl@gmail.com | 2021-02-23 17:37:28 5 | 202105 | 2302166638 | lmn@gmail.com | 2021-02-23 17:37:28
    dbfiddle

    但如果我尝试了这一方法,该如何解决1)如果我在2021-02这样的日期通过了created_,那么它应该会给出与此相关的所有结果。如果我在“2021-02-23 17”这样的日期通过了created_,那么它应该会给出与此相关的所有结果。如果我在“2021-”这样的日期通过created_,那么它应该会给出与此相关的所有结果。如果我在“2021-”这样的日期通过created_,那么它应该会给出与此相关的所有结果。还有很多类似的组合。你写
    YEAR(create_at)
    =2021,或者在末尾看到我添加的示例。你应该把这些作为日期时间范围搜索来做——即
    在>=x处创建和
    处创建的函数运行函数或将其转换为字符串
    
    create table `orders` (
        `order_id` int (11),
        `order_no` varchar (300),
        `sub_order_no` varchar (300),
        `name` varchar (300),
        `email` varchar (300),
        `created_at` datetime 
    ); 
    insert into `orders` (`order_id`, `order_no`, `sub_order_no`, `name`, `email`, `created_by`) values('1','202102','964','23038','pqr@gmail.com','2021-02-23 17:37:28');
    insert into `orders` (`order_id`, `order_no`, `sub_order_no`, `name`, `email`, `created_by`) values('2','202102','965','22166638','abc@gmail.com','2021-02-23 17:37:28');
    insert into `orders` (`order_id`, `order_no`, `sub_order_no`, `name`, `email`, `created_by`) values('3','202133','966','2202166638','def@gmail.com','2021-02-23 17:37:28');
    insert into `orders` (`order_id`, `order_no`, `sub_order_no`, `name`, `email`, `created_by`) values('4','202044','967','2302166638','jkl@gmail.com','2021-02-23 17:37:28');
    insert into `orders` (`order_id`, `order_no`, `sub_order_no`, `name`, `email`, `created_by`) values('5','202105','968','2302166638','lmn@gmail.com','2021-02-23 17:37:28');
    
    create table `orders` (
        `order_id` int (11),
        `order_no` varchar (300),
        `sub_order_no` varchar (300),
        `name` varchar (300),
        `email` varchar (300),
        `created_at` datetime 
    ); 
    insert into `orders` (`order_id`, `order_no`, `sub_order_no`, `name`, `email`, `created_at`) values('1','202102','964','23038','pqr@gmail.com','2021-02-23 17:37:28');
    insert into `orders` (`order_id`, `order_no`, `sub_order_no`, `name`, `email`, `created_at`) values('2','202102','965','22166638','abc@gmail.com','2021-02-23 17:37:28');
    insert into `orders` (`order_id`, `order_no`, `sub_order_no`, `name`, `email`, `created_at`) values('3','202133','966','2202166638','def@gmail.com','2021-02-23 17:37:28');
    insert into `orders` (`order_id`, `order_no`, `sub_order_no`, `name`, `email`, `created_at`) values('4','202044','967','2302166638','jkl@gmail.com','2021-02-23 17:37:28');
    insert into `orders` (`order_id`, `order_no`, `sub_order_no`, `name`, `email`, `created_at`) values('5','202105','968','2302166638','lmn@gmail.com','2021-02-23 17:37:28');
    
    SELECT `order_id`,`order_no`,`name`,`email`,`created_at` FROM orders WHERE
    created_at ='2021-02-23 17:37:28'
    
    order_id | order_no | name | email | created_at -------: | :------- | :--------- | :------------ | :------------------ 1 | 202102 | 23038 | pqr@gmail.com | 2021-02-23 17:37:28 2 | 202102 | 22166638 | abc@gmail.com | 2021-02-23 17:37:28 3 | 202133 | 2202166638 | def@gmail.com | 2021-02-23 17:37:28 4 | 202044 | 2302166638 | jkl@gmail.com | 2021-02-23 17:37:28 5 | 202105 | 2302166638 | lmn@gmail.com | 2021-02-23 17:37:28
    SELECT `order_id`,`order_no`,`name`,`email`,`created_at` FROM orders WHERE
    DATE_FORMAT(created_at,'%Y-%m') ='2021-02'
    
    order_id | order_no | name | email | created_at -------: | :------- | :--------- | :------------ | :------------------ 1 | 202102 | 23038 | pqr@gmail.com | 2021-02-23 17:37:28 2 | 202102 | 22166638 | abc@gmail.com | 2021-02-23 17:37:28 3 | 202133 | 2202166638 | def@gmail.com | 2021-02-23 17:37:28 4 | 202044 | 2302166638 | jkl@gmail.com | 2021-02-23 17:37:28 5 | 202105 | 2302166638 | lmn@gmail.com | 2021-02-23 17:37:28