【Mysql】求出离最近相差X天的项,sql语句关于日期的比对

对于一张如下的testtable表,如果要查询date离现在相差的30年的日期

则应该使用如下的sql语句:

select * from testtable
where
timestampdiff(year,date,now())<30

这种方法,即使date这个字段是varchar类型也是可以查询成功的。

timestampdiff函数中,第一个字段是单位,可以改成second,day,month等

而如下的查询方法,考虑到1985离现在相差30年,虽然简单,但是如果日期的变更,比如明年,这条语句则又要改成1986-1-1。

同时,最致命的是,如果date字段由于各种原因使用varchar类型保存的,

则根本就无法查询成功。

select * from testtable
where date>'1985-1-1'

时间: 2024-11-09 02:12:09

【Mysql】求出离最近相差X天的项,sql语句关于日期的比对的相关文章

MySQL数据库学习笔记(三)----基本的SQL语句

主要内容: 一.cmd命令行的常用命令 二.数据定义语言(DDL) 三.数据操纵语言(DML) 四.数据查询语言(DRL) 五.事务控制语言(TCL) 一.cmd命令行的常用命令: 当我们使用MySQL 5.5 Command Line Client这个客户端登陆时,只能登陆root用户.如果今后创建了别的用户,就很麻烦了,所以我们不用MySQL 5.5 Command Line Client这个客户端,而是直接使用cmd. 登录MySQL数据库: 因为在这之前安装MySQL的时候,已经将环境变

Mysql 将结果保存到文件 从文件里运行sql语句 记录操作过程(tee 命令的使用)

1.  有时候我们可能须要记录我们对mysql的操作过程,这时我们能够使用mysql的tee命令 1)第一种情况是在链接数据库的时候使用tee >mysql  -u root  -p  --tee=C:\log.txt       //注意这里路径不须要加上引號 这时我们对数据库的全部操作都会记录在log.txt上: 2) 第二中方式是在链接上数据库后使用 mysql >   tee  C:\log.txt        //这个命令后面的操作都会记录在log中 当你不想记录log时,你能够使

MYSQL之数据库初识、安装详解、sql语句基本操作

目录 MYSQL之数据库初识及安装详解 1.什么是数据库? 1.什么是数据?(data) 2.什么是数据库?(databases,简称DB) 2.为什要用数据库? 3.什么是数据库管理系统?(DataBase Management System 简称DBMS) 4.数据库管理软件的分类 5.MYSQL数据库 6.数据库服务器.数据管理系统.数据库.表记录之间的关系 MYSQL的安装 下载及启动 配置环境变量及作系统服务 修改密码 破解密码 配置文件 数据库的基本操作 MYSQL之数据库初识及安装

mysql性能优化学习笔记(3)常见sql语句优化

一.max()优化mysql> explain select max(payment_date) from payment;+----+-------------+---------+------+---------------+------+---------+------+-------+-------+| id | select_type | table   | type | possible_keys | key  | key_len | ref  | rows  | Extra |+-

Mysql 数据库中所有列名为某个值的 sql 语句

SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME IN ('columnname') AND TABLE_SCHEMA='databasename';

MySQL中明知道查询结果只有一个,SQL语句中使用LIMIT 1会提高查询效率

用户使用email作为用户名登陆的话,就需要查询出email对应的一条记录.每个用户的email是唯一的. SELECT * FROM t_user WHERE email=?; 上面的语句实现了查询email对应的一条用户信息,但是由于email这一列没有加索引,会导致全表扫描,效率会很低. SELECT * FROM t_user WHERE email=? LIMIT 1; 加上LIMIT 1,只要找到了对应的一条记录,就不会继续向下扫描了,效率会大大提高. 如果email是索引的话,就不

MySql 建表、添加字段、修改字段SQL语句写法

建表: DROP TABLE IF EXISTS bulletin; CREATE TABLE bulletin( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,             # 主键 uid INT(11) NOT NULL DEFAULT 0,    # 创建者id context VARCHAR(600) NOT NULL DEFAULT '',  # 公告详细内容(300字) begintime DEC(20) NOT NULL DEF

MySQL 解密 --&gt; 如何查看二进制日志ROW模式下最原始的SQL语句

MySQL的binlog的ROW模式解析          在mysql5.6以后,对主从数据一致性要求变高了,statement格式逐渐不太适合业务的需求了,所以生产环境大家都采用了row模式,row模式是传输最底层的数据变化的insert的模块来进行主从数据的传输,那么在binlog里面就和普通的statement模式有何差别?能否看到最原始的sql语句呢? 1.准备录入数据 mysql> create table test1(id int,c1 varchar(20),type int,a

如何在mysql查找效率慢的SQL语句

如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow-queries[=file_name]选项启动时,mysqld 会写一个包含所有执行时间超过long_query_time 秒的SQL语句的日志文件,通过查看这个日志文件定位效率较低的SQL .下面介绍MySQL中如何查询慢的SQL语句 一.MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句 1,slow_query_log 这