最近常用到mysql的datetime类型的日期范围搜索,总结有以下几种方式可以,可以查询精确到秒之间的记录。字符串日期可以直接和datetime类型之间比较,无需转换,Mysql会将字符串类型日期转换成长整型数字进行比较,当然你也可以转换为同一类型后再比较
mysql日期与字符串转换函数
字符串转日期:STR_TO_DATE('2019-07-25 00:00:33', '%Y-%m-%d %H:%i:%s') ,走索引
日期转字符串:DATE_FORMAT('2019-07-25 00:00:33', '%Y-%m-%d %H:%i:%s'),不走索引
如下表,查询,create_time为datetime类型,查询两个日期范围内的数据。
方式一、between...and(推荐)
SELECT * FROM k_student WHERE create_time between '2019-07-25 00:00:33' and '2019-07-25 00:54:33'
方式二、大小于号
SELECT * FROM k_student WHERE create_time >= '2019-07-25 00:00:33' AND create_time <= '2019-07-25 00:54:32'
方式三、转换为UNIX_TIMESTAMP比较,create_time若加了索引,不走索引
SELECT * FROM k_student WHERE UNIX_TIMESTAMP(create_time) between UNIX_TIMESTAMP('2019-07-25 00:00:33') and UNIX_TIMESTAMP('2019-07-25 00:54:33')
最近常用到mysql的datetime类型的日期范围搜索,总结有以下几种方式可以,可以查询精确到秒之间的记录。字符串日期可以直接和datetime类型之间比较,无需转换,Mysql会将字符串类型日期转换成长整型数字进行比较,当然你也可以转换为同一类型后再比较mysql日期与字符串转换函数字符串转日期:STR_TO_DATE('2019-07-25 00:00:33', '%Y-%m-%d ...
SELECT * FROM 表名 WHERE DATE_FORMAT(时间字段,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m');
4.
查询
本季度
SELECT * FROM 表名 WHERE QUARTER(时间
代码如下: select * from table where DATE_FORMAT(FROM_UNIXTIME(createtime),’%Y-%m-%d’)=’2014-01-02′ FROM_UNIXTIME使用语法 FROM_UNIXTIME(unix_timestamp,format) FROM_UNIXTIME(unix_timestamp), FROM_UNIXTIME(unix_timestamp,format)是
MySQL
里的时间函数 ,unix_timestamp可以是字段名,也可以直接是Unix时间,format主要是将返回值格式化。 若format已经给出,则结果的
在
MySQL
中,我们可以使用GROUP BY和HAVING子句来根据多个字段
查找
重复。
例如,如果我们有一张名为employees的员工表,其中包含了员工姓名、出生
日期
和性别等字段。现在我们想根据姓名和出生
日期
这
两个
字段来
查找
重复员工
记录
,我们可以执行以下SQL语句:
SELECT name, birthdate, gender, COUNT(*)
FROM employees
GROUP BY name, birthdate
HAVING COUNT(*) > 1;
这个语句将按照姓名和出生
日期
字段分组,并计算每组中的
记录
数。如果
记录
数大于1,则说明有重复
记录
。
运行完这个语句后,我们将会看到输出了每个重复
记录
的姓名、出生
日期
、性别和
记录
数。如果想要删除这些重复
记录
的话,我们可以将上面的SELECT语句改为DELETE语句,并使用子
查询
来选择要删除的
记录
,如下所示:
DELETE FROM employees
WHERE (name, birthdate) IN (
SELECT name, birthdate
FROM employees
GROUP BY name, birthdate
HAVING COUNT(*) > 1