文章主要是作为知识整理,内容略有修改,方便以后查阅,内容转摘至 陈宇衡的个人博客,欢迎前去围观。

作为演示效果,先创建一个测试表,在插入两条数据(注:时间为 datetime 类型,unix 时间戳需要转换)

1. 创建表:

    create table if not exists t
(
id int,
addTime datetime default '0000-00-00 00:00:00'
) 2. 添加两条初始数据: insert t values(1, '2017-03-12 02:00:00');
insert t values(2, '2017-03-22 02:00:00');

当天或当日插入的数据:

  • 传统对比判断:SELECT count(*) FROM t WHERE DATE_FORMAT(addTime, '%Y-%m-%d') = date_format(now(),'%Y-%m-%d'));
  • 第一点的简写:SELECT * FROM t WHERE addTime >= date_format(NOW(), '%Y-%m-%d');
  • 利用函数判断:SELECT * FROM t WHERE DATEDIFF(addTime, NOW()) =0;(推荐此方法)

注:返回当天时间的mysql函数有

CURDATE()CURRENT_DATE()CURRENT_DATE 返回格式 0000-00-00 (年-月-日),

NOW() 返回格式 0000-00-00 00:00:00 (年-月-日 时:分:秒) 几种;

当周的相关数据写法:

  • 获取今天是一周第几天或星期几:SELECT WEEKDAY(now()); (返回的是数字:0为周一,6为周日)
  • 获取本周的第一天日期:SELECT DATE_SUB(now(), INTERVAL WEEKDAY(now()) day);(或SELECT DATE_ADD(now(),INTERVAL -WEEKDAY(now()) day);SELECT CURDATE() – WEEKDAY(CURDATE());)
  • 再写一个上周的第一天至现在的数据:(以表t为数据表)

    SELECT * FROM t WHERE addTime >= date_format(date_sub(date_sub(now(), INTERVAL WEEKDAY(NOW()) DAY), INTERVAL 1 WEEK), ‘%Y-%m-%d’);是不是有些感觉了!

    注:若你是以时间戳保存的时间字段,那么请用from_unixtime()函数转换为时间格式,如:from_unixtime($timestamp)

    INTERVAL的用户说明:

    1、当函数使用时,即INTERVAL(),为比较函数,如:INTERVAL(10,1,3,5,7); 结果为4;

    原理:10为被比较数,后面1,3,5,7为比较数,将后面四个依次与10比较,看后面数字组有多少个少于10,则返回其个数。前提是后面数字组为从小到大排列,否则返回结果0。

    2、当关键词使用时,表示为设置时间间隔,常用在date_add()date_sub()函数里,如:INTERVAL 1 DAY,解释为将时间间隔设置为1天。

    弄清楚了上面几个重要的日期运算函数,下面再来一个混合的日期运算。

    3、上个月的第一天时间:SELECT DATE_SUB(DATE_SUB(NOW(), INTERVAL DAYOFMONTH(NOW()) -1 DAY), INTERVAL 1 MONTH); 是不是一目了然了!

当月的相关数据写法:

  • 今天是当月的第几天:SELECT DAYOFMONTH(NOW());
  • 获取当月的第一天时间:SELECT DATE_SUB(NOW(), INTERVAL DAYOFMONTH(NOW()) –1 DAY);

    日期运算函数,句型:date_add(date,INTERVAL expr type)date_sub(date,INTERVAL expr type),date为一个datetime或date值,可当作起始时间,expr为一个表达式,用来指定增加或减少的时间间隔数目,可为一个字符串–若为负值,则在表达式前加个"-"符号。type为关键词,它表示了表达式被解释的方式,通常用年(year)月(month)日(day)周(week)等。

Mysql中将日期转为时间戳

前三点的方法,讲的都是将日期转为相应时间常量,并没有提到时间戳与时间的转换,这里把它写出来,

1、时间戳转日期,方法是select from_unixtime(1336542121);

2、日期转时间戳,方法是:select unix_timestamp('2013-04-08');

例如 按天统计新增记录:select count(*) as count, from_unixtime(addTime, '%Y-%m-%d') as datetime from t;

结合前面例子,对时间戳进行相应的转换就可以了。

mysql 统计按天、星期、按月数据的各种 sql 语句 (转录)的更多相关文章

  1. mysql统计天、周、月、季度、半年、年

    之前在网上搜索按时间统计,发现不是很全 ,接着别人的思路进行延伸下, mysql统计天.周.月.季度.半年.年 前期工作创建辅助表 CREATE TABLE num (i INT); ),(),(), ...

  2. 1.4 数据库和常用SQL语句(正文)——MySQL数据库命令和SQL语句

    前面我们已经讲述了,登录时,我们使用mysql –u root –p命令进行,此时如果设置了密码,则需要输入密码. 输入密码后即进入MySQL的操作界面,此时,命令行窗体左侧显示"mysql ...

  3. 点评阿里JAVA手册之MySQL数据库 (建表规约、索引规约、SQL语句、ORM映射)

    下载原版阿里JAVA开发手册  [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文内容:MySQL数据库 (建表规约.索引规约.SQL语句.ORM映 ...

  4. 项目总结04:SQL批量导入数据:将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库

    将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库 写在前面:本文用的语言是java:数据库是MySql: 需求:在实际项目中,经常会被客户要求,做批量导入数据:一般的简单的单表数 ...

  5. 使用excel中的数据快速生成sql语句

    在小公司的话,总是会有要开发去导入历史数据(数据从旧系统迁移到新系统上)的时候.这个时候,现场实施或客户会给你一份EXCEL文档,里面包含了一些别的系统上的历史数据,然后就让你导入到现在的系统上面去. ...

  6. mysql中获取一天、一周、一月时间数据的各种sql语句写法

    今天抽时间整理了一篇mysql中与天.周.月有关的时间数据的sql语句的各种写法,部分是收集资料,全部手工整理,自己学习的同时,分享给大家,并首先默认创建一个表.插入2条数据,便于部分数据的测试,其中 ...

  7. MySQL之唯一索引、外键的变种、SQL语句数据行操作补充

    0.唯一索引 unique对num进行唯一限制,表示num是独一无二的,uql是唯一索引名称 上面为联合索引:num和xx不能完全一样  1.外键的变种 a. 用户表和部门表 用户: 1 alex 1 ...

  8. mysql中删除完全重复数据的准确SQL语句

    删除数据库中重复的记录,只保留一条 DELETE FROM tb_gps_records WHERE id NOT IN (SELECT bid FROM (SELECT min(id) as bid ...

  9. mysql数据库技术1——基本的增删查改的sql语句

    1.数据库语言的分类 DDL:数据库定义语言 data Definition language 用于创建.修改.和删除数据库内的数据结构,如: 1:创建和删除数据库(CREATE DATABASE | ...

随机推荐

  1. log4net的相关使用笔记

    1, XmlConfigurator 创建添加一个Tracer project,引用nuget上最新的log4net 在Tracer里新增一个AppLog类: public static class ...

  2. noip模拟赛 排序

    分析:因为序列是不严格单调的,所以挪动一个数其实就相当于把这个数给删了.如果a[i] < a[i-1],那么可以删掉a[i],也可以删掉a[i-1](!如果没考虑到这一点就只有90分),删后判断 ...

  3. noip模拟赛 Massacre at Béziers

    题目背景 下发压缩包链接: https://pan.baidu.com/s/1geC4ooz 密码: 3vpt 所有的一切———所有的一切都被染成了红与黑. 翻卷的红莲烈焰舔舐着大地,释放出异抽的黑烟 ...

  4. 子序列 NYOJ (尺取法+队列+hash) (尺取法+离散化)

    子序列 时间限制:3000 ms  |  内存限制:65535 KB 难度:5   描述 给定一个序列,请你求出该序列的一个连续的子序列,使原串中出现的所有元素皆在该子序列中出现过至少1次. 如2 8 ...

  5. N天学习一个Linux命令之ln

    前言有时候同一个文件想创建多个别名,这个时候可以使用链接文件代替 用途对文件或者目录创建链接,默认创建的是硬链接 硬链接Linux底层文件系统由超级数据块,目录树对象,inode索引节点对象,文件对象 ...

  6. Spark Streaming接收Kafka数据存储到Hbase

    Spark Streaming接收Kafka数据存储到Hbase fly spark hbase kafka 主要参考了这篇文章https://yq.aliyun.com/articles/60712 ...

  7. LeetCode——Permutation Sequence

    The set [1,2,3,-,n] contains a total of n! unique permutations. By listing and labeling all of the p ...

  8. 四大传值详解:属性传值,单例传值,代理传值,block传值

    一:属性传值 传值情景:从前一个页面向后一个页面传值 a.在后一个页面,根据传值类型和个数,写属性 b.在前一个页面, 为属性赋值 c.在后一个页面, 使用值 例如: 第一个视图: #import & ...

  9. 使用Memcached改进Java企业级应用性能:架构和设置

    Memcached由Danga Interactive开发.用来提升LiveJournal.com站点性能. Memcached分布式架构支持众多的社交网络应用,Twitter.Facebook还有W ...

  10. Struts2 自己定义下拉框标签Tag

    自己定义标签主要包含三个步骤: 1.编写java类,继承TagSupport类. 2.创建tld文件,影射标签名和标签的java类. 3.jsp页面引入tld. 样例:自己定义下拉框标签 假设页面上有 ...