一个在使用方法上的低级错误(MySQL场景)

首先申明这个技术含量不高

  • 初始化问题数据。注意这里的t代表时间,数据类型是字符串。
  • 为什么用字符串来表示时间?那这就是问题所在。当初创建的人不懂。
  • 这个回答不知道满意吗?
mysql> create table t1 (id int,t varchar(20)); Query OK, 0 rows affected (0.02 sec) mysql> insert into t1 values (1,'2026-01-01 01:00:00'); Query OK, 1 row affected (0.00 sec) mysql> insert into t1 values (2,'2026-01-01 10:00:00'); Query OK, 1 row affected (0.00 sec) mysql> insert into t1 values (3,'2026-01-02 02:00:00'); Query OK, 1 row affected (0.00 sec) mysql> insert into t1 values (4,'2026-01-03 02:00:00'); Query OK, 1 row affected (0.00 sec) mysql> insert into t1 values (5,'2026-01-04 08:00:00'); Query OK, 1 row affected (0.00 sec) mysql> insert into t1 values (6,'2026-01-02 00:00:00'); Query OK, 1 row affected (0.01 sec) mysql> select * from t1; +------+---------------------+ | id | t | +------+---------------------+ | 1 | 2026-01-01 01:00:00 | | 2 | 2026-01-01 10:00:00 | | 3 | 2026-01-02 02:00:00 | | 4 | 2026-01-03 02:00:00 | | 5 | 2026-01-04 08:00:00 | | 6 | 2026-01-02 00:00:00 | +------+---------------------+ 6 rows in set (0.00 sec)
  • 如果查询小于等于1月2日的。注意我写了等于,但是结果是没有1月2日。这也可以理解。字符串就这样定义,从第一个字符开始算。哪怕是1月2日0点0分0秒也不属于范围。
  • 只有条件是小于1月3日,才能看到1月2日。
mysql> select * from t1 where t<='2026-01-02'; +------+---------------------+ | id | t | +------+---------------------+ | 1 | 2026-01-01 01:00:00 | | 2 | 2026-01-01 10:00:00 | +------+---------------------+ 2 rows in set (0.00 sec) mysql> select * from t1 where t<='2026-01-03'; +------+---------------------+ | id | t | +------+---------------------+ | 1 | 2026-01-01 01:00:00 | | 2 | 2026-01-01 10:00:00 | | 3 | 2026-01-02 02:00:00 | | 6 | 2026-01-02 00:00:00 | +------+---------------------+ 4 rows in set (0.00 sec)
  • 然后同样的表把字段类型换一下。把时间字段给于正经的时间类型。(不过时间精度只到天,因为有的系统场景只要到天就行了。前面模拟的时分秒的仅仅是为了展示说明0点的边界差异)
  • 可以看到,这个小于等于时候是能把1月2日时间查出来的。就这一点的差距,取数能查一天的数据量。
  • 我给别人演示,这就是他的问题所在。在Oracle中没这种问题。因为时间类型和字符类型的写法都不一样。
mysql> drop table t2; Query OK, 0 rows affected (0.01 sec) mysql> create table t2 as select * from t1; Query OK, 6 rows affected (0.03 sec) Records: 6 Duplicates: 0 Warnings: 0 mysql> alter table t2 modify t date; Query OK, 6 rows affected, 5 warnings (0.05 sec) Records: 6 Duplicates: 0 Warnings: 5 mysql> select * from t2; +------+------------+ | id | t | +------+------------+ | 1 | 2026-01-01 | | 2 | 2026-01-01 | | 3 | 2026-01-02 | | 4 | 2026-01-03 | | 5 | 2026-01-04 | | 6 | 2026-01-02 | +------+------------+ 6 rows in set (0.00 sec) mysql> select * from t2 where t<='2026-01-02'; +------+------------+ | id | t | +------+------------+ | 1 | 2026-01-01 | | 2 | 2026-01-01 | | 3 | 2026-01-02 | | 6 | 2026-01-02 | +------+------------+ 4 rows in set (0.00 sec)
  • 再换一下时间类型。这种场景下和第一张字符串时间取值几乎一致,区别是0点0分0秒的能查询的到。如果要1月2日所有的数据,条件还是要写小于1月3日。注意不要带=
mysql> create table t3 as select * from t1; Query OK, 6 rows affected (0.02 sec) Records: 6 Duplicates: 0 Warnings: 0 mysql> alter table t3 modify t datetime; Query OK, 6 rows affected (0.04 sec) Records: 6 Duplicates: 0 Warnings: 0 mysql> select * from t3; +------+---------------------+ | id | t | +------+---------------------+ | 1 | 2026-01-01 01:00:00 | | 2 | 2026-01-01 10:00:00 | | 3 | 2026-01-02 02:00:00 | | 4 | 2026-01-03 02:00:00 | | 5 | 2026-01-04 08:00:00 | | 6 | 2026-01-02 00:00:00 | +------+---------------------+ 6 rows in set (0.00 sec) mysql> select * from t3 where t<='2026-01-02'; +------+---------------------+ | id | t | +------+---------------------+ | 1 | 2026-01-01 01:00:00 | | 2 | 2026-01-01 10:00:00 | | 6 | 2026-01-02 00:00:00 | +------+---------------------+ 3 rows in set (0.00 sec)

错误是低级的,再结合数据类型就有点绕。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1125463.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习毕设选题推荐:基于python的CNN训练识别吃的美食基于深度学习的CNN训练识别吃的美食

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

深度学习毕设项目推荐-深度学习基于python的CNN训练识别吃的美食基于python的深度学习CNN训练识别吃的美食

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

救命神器!9个AI论文网站测评:本科生毕业论文全攻略

救命神器&#xff01;9个AI论文网站测评&#xff1a;本科生毕业论文全攻略 学术写作新选择&#xff1a;AI论文网站测评全解析 在当前高校教育日益重视科研能力的背景下&#xff0c;本科生在撰写毕业论文时面临诸多挑战&#xff0c;如选题困难、资料查找繁琐、格式规范不熟悉等。…

ReadView的结构和工作原理?

你想深入掌握 Read View 的结构和工作原理&#xff0c;这是理解 MVCC 快照读的核心 ——Read View 就像 MVCC 的 “版本安检员”&#xff0c;决定了当前事务能看到版本链中的哪个版本。接下来我会先拆解 Read View 的核心结构&#xff0c;再用通俗的逻辑 实例讲清它的工作原理…

Java 进阶:如何让线程主动让出 CPU

Java 进阶如何让线程主动让出 CPU ThreadsleepThreadyieldThreadcurrentThreadsuspendObjectwaitLockSupportparkThreadstop Java 进阶&#xff1a;如何让线程主动让出 CPU Thread.sleep sleep 方法可以让线程主动让出 CPU&#xff0c;但是并不会释放锁。 /*** Causes the …

AngularJS 模块详解

AngularJS 模块详解 引言 AngularJS 是一个强大的JavaScript框架,用于构建单页应用程序(SPA)。它提供了一套丰富的特性,其中包括模块化。模块化是现代软件开发的一个重要概念,它有助于提高代码的可维护性和可扩展性。本文将详细解析 AngularJS 模块的概念、创建和使用方…

救命神器!自考必看TOP9 AI论文网站测评与推荐

救命神器&#xff01;自考必看TOP9 AI论文网站测评与推荐 2026年自考论文写作工具测评&#xff1a;为何需要这份榜单&#xff1f; 随着人工智能技术的不断进步&#xff0c;AI论文写作工具在学术领域的应用越来越广泛。对于自考学生而言&#xff0c;撰写高质量论文不仅是毕业的必…

idea创建springBoot的五种方式

目录 第一种 第二种 第三种 第四种 第五种 1.先创建一个普通的mavenjava项目 2.pom.xml 3.启动类 4.controller 5.运行访问 第一种 idea直接从spring.io官网下载 https://start.spring.io/ 使用jar包创建就行&#xff0c;也是maven项目&#xff0c;jdk选1.8&#…

Java实战:Spring Boot application.yml配置文件详解

本文将详细介绍Spring Boot application.yml 配置文件的使用和配置项。我们将探讨 application.yml 文件的基本概念&#xff0c;以及如何使用它来配置Spring Boot应用程序的各个方面。此外&#xff0c;我们将通过具体的示例来展示如何配置不同的Spring Boot组件&#xff0c;如数…

idea、mybatis报错Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required

这个错误通常与MyBatis的配置有关&#xff0c;涉及到MyBatis的SqlSessionFactory或SqlSessionTemplate的配置问题。以下是一些可能的解决方案&#xff1a; 1.检查DataSource配置&#xff1a; 确保你的数据源&#xff08;DataSource&#xff09;被正确配置。在Spring Boot中&…

Azure GPv1 存储账户迁移至 GPv2 完整指南

概述 Microsoft Azure 将于 2026年10月13日 正式退役通用用途 v1(General-purpose v1,GPv1)存储账户。所有用户必须在此日期前将 GPv1 存储账户升级至通用用途 v2(General-purpose v2,GPv2),以避免服务中断和潜在的成本增加。 为什么需要迁移? 退役时间线 截止日期:…

Java学习进阶知识篇

系列文章目录 提示&#xff1a;....................... 文章目录 系列文章目录前言一、类和对象 面向对象基本介绍类的基本使用属性构造方法和析构方法对象 二、总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; Java面向对象编程的进阶知识 一、…

Prompt Tuning动态选医疗特征提速诊断

&#x1f4dd; 博客主页&#xff1a;Jax的CSDN主页 Prompt Tuning动态选医疗特征提速诊断 目录Prompt Tuning动态选医疗特征提速诊断 引言&#xff1a;诊断效率的全球性挑战 技术原理&#xff1a;动态特征选择的机制创新 现实应用&#xff1a;2023年临床试点的突破性验证 挑战与…

Memcached 连接:深入理解与优化实践

Memcached 连接:深入理解与优化实践 引言 Memcached 是一种高性能的分布式内存对象缓存系统,它能够存储键值对,广泛应用于减轻数据库负载、提高系统响应速度等方面。在Memcached的应用中,连接的建立和维护是至关重要的。本文将深入探讨Memcached连接的原理、优化策略以及…

深度学习计算机毕设之基于python训练鲜花识别基于卷神经网络训练鲜花识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

HeidiSQL导入与导出数据

HeidiSQL两种导入与导出数据的方法&#xff1a;整个库复制&#xff0c;和仅复制数据 一 整个库复制 1 选中需要导出的数据库(这里是MyDBdata)&#xff0c;点击导出为SQL脚本。2 按照如图进行选择3 选做&#xff1a;删除当前数据库【如果有】 -- 删除数据库 USE mysql; DROP DAT…

2026最全Gemini学生优惠申请指南

Google 在 2025 年正式推出 Gemini 学生优惠计划&#xff0c;符合条件的学生可在2026年1月31日前通过认证免费获得价值约 $300 的 Google AI Pro 服务长达 15 个月。这意味着你可以零成本使用&#xff1a;Gemini Advanced&#xff08;2.5 Pro / 3 系列模型&#xff09;2TB Goog…

毫米波V2I网络的链路层仿真研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

AS7341可见光谱传感器原理图设计,已量产(光线传感器)

目录 1、电源系统:PAM3101 LDO 的 “稳” 字诀 2、AS7341 核心电路:电平匹配是 I2C 通信的 “生命线” 3、暗光补光:传感器自控制的高亮 LED 电路 4、实际调板的小注意点 最近在做便携式环境光光谱检测项目时,我们基于 ams 的 AS7341 搭了一套硬件电路 —— 这颗芯片算…

文档解析API哪个好用

在构建企业知识库或RAG系统时&#xff0c;文档解析质量直接决定了大模型理解的上限。市面上文档解析API众多&#xff0c;但真正能应对复杂场景的却屈指可数。从跨页表格到手写公式&#xff0c;从多栏布局到扫描件识别&#xff0c;每一个技术难点都可能成为项目的拦路虎。本文将…