# ---- 对应时间戳怎么生成的? ----

/*
TIME_CD TIME_CD1
000000 000005
000001 000005
000002 000005
000003 000005
000004 000005
000005 000010
*/

  利用MySQL常用日期函数生成时间维度表

  • 日期时间函数
  • 按小时、按分钟、按秒生成
SELECT STR_TO_DATE('September 02, 2016','%M %d, %Y') AS DATE; # 2016-09-02

SELECT CURRENT_DATE(), CURRENT_TIME(), CURRENT_TIMESTAMP;
# 2018-05-29 01:00:54 2018-05-29 01:00:54

  MySQL快速生成时间维度表

SET @d0 = '2018-01-01';
SET @d1 = '2018-12-31';
SET @date = DATE_SUB(@d0, INTERVAL 1 DAY); USE test; CREATE TABLE aa_time_dim(
DATE DATE DEFAULT NULL,
id INT(11) NOT NULL,
Y SMALLINT(6) DEFAULT NULL,
m SMALLINT(6) DEFAULT NULL,
d SMALLINT(6) DEFAULT NULL,
yw SMALLINT(6) DEFAULT NULL,
w SMALLINT(6) DEFAULT NULL,
q SMALLINT(6) DEFAULT NULL,
wd SMALLINT(6) DEFAULT NULL,
m_name CHAR(10) DEFAULT NULL,
wd_name CHAR(10) DEFAULT NULL,
PRIMARY KEY (id))ENGINE = INNODB DEFAULT CHARSET = utf8; SELECT * FROM aa_time_dim; INSERT INTO aa_time_dim
SELECT
@date := DATE_ADD(@date, INTERVAL 1 DAY) AS DATE,
DATE_FORMAT(@date, '%Y%m%d') AS id,
YEAR(@date) AS Y,
MONTH(@date) AS m,
DAY(@date) AS d,
DATE_FORMAT(@date, '%x') AS yw,
WEEK(@date,3) AS w,
QUARTER(@date) AS q,
WEEKDAY(@date) + 1 AS wd,
MONTHNAME(@date) AS m_name,
DAYNAME(@date) AS wd_name
FROM xxx
WHERE DATE_ADD(@date,INTERVAL 1 DAY) <= @d1
ORDER BY DATE; SELECT * FROM aa_time_dim; DROP TABLE aa_time_dim;

  注意:此处的表xxx,仅仅需要有多于需要生成日期的记录数即可。思路是从xxx表选择多行数据,同时生成对应的日期字段。  

  结果:


END 2018-05-29 01:15:25

MySQL学习笔记:生成时间维度表的更多相关文章

  1. MySQL学习笔记02_数据库和表的基本操作

    02_1 操作数据库 (1)创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification[, create_specifica ...

  2. MySQL学习笔记_4_MySQL创建数据表(下)

    MySQL创建数据表(下) 五.数据表类型及存储位置 1.MySQL与大多数数据库不同,MySQL有一个存储引擎概念.MySQL可以针对不同的存储需求选择不同的存储引擎. 2. showengines ...

  3. MySQL学习笔记:生成时间维度表2

    实现目的: 测试: # 测试 加一秒 SECOND), INTERVAL SECOND); SECOND),'%H%i%s');# 第一秒 SECOND),'%H%i%s');# 最后一秒 SELEC ...

  4. MySQL学习笔记_时间,多表更新,数据库元数据

    MySQL技术内幕一.MySQL基础知识1.1.显示表中的列SHOW COLUMNS FROM order_info like 'order%'1.2.显示表SHOW TABLES LIKE 'ord ...

  5. MySQL学习记录--生成时间日期数据

    时间数据格式组件: 组件 定义 范围 YYYY 年份,包括世纪 1000~9999 MM 月份 01(January)~12(December) DD 日 01~31 HH 小时 00~23 HHH ...

  6. MySQL学习笔记_2_MySQL创建数据表(上)

    MySQL创建数据表(上) 一.创建数据表的SQL语句模型[弱类型] CREATETABLE [IF NOT EXISTS] 表名称( 字段名1列的类型[属性][索引], 字段名2 列的类型[属性][ ...

  7. MySQL学习笔记_3_MySQL创建数据表(中)

    MySQL创建数据表(中) 三.数据字段属性 1.unsigned[无符号] 可以让空间增加一倍 比如可以让-128-127增加到0-255 注意:只能用在数值型字段 2.zerofill[前导零] ...

  8. MySQL学习笔记2(多表操作)

    外键:使两张表之间存在关联 特点: 1.从表外键的值是对主表主键的引用 2.从表外键类型,必须与主表主键类型一致 示例: 创建两个表并准备数据: USE mybase; CREATE TABLE ca ...

  9. MySQL学习笔记:从一个表update到另外一个表

    # ---- 测试数据 ---- # 表1 CREATE TABLE temp_x AS AS c_id, 1.11 AS c_amount FROM DUAL UNION ALL AS c_id, ...

随机推荐

  1. 字符串连接比较(std::unique_ptr实现)

    比较代码之间可能相差大,可是速度相差很大,而且目的在于测试unique_ptr使用...; C/C++: #include <iostream> std::unique_ptr<ch ...

  2. poj 3415 后缀数组 两个字符串中长度不小于 k 的公共子串的个数

    Common Substrings Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 11469   Accepted: 379 ...

  3. List保存在ViewState

    private List<SYSUAO> UserRoleList { get { return ViewState["UserRoleList"] as List&l ...

  4. wepy

    npm install -g cnpm --registry=https://registry.npm.taobao.org https://blog.csdn.net/qq_40414159/art ...

  5. CALayer属性:position和anchorPoint

    一.position和anchorPoint 1.简单介绍 CALayer有2个非常重要的属性:position和anchorPoint @property CGPoint position; 用来设 ...

  6. Django 2.0.1 官方文档翻译: 文档目录 (Page 1)

    Django documentation contents 翻译完成后会做标记. 文档按照官方提供的内容一页一页的进行翻译,有些内容涉及到其他节的内容,会慢慢补上.所有的翻译内容按自己的理解来写,尽量 ...

  7. Java并发编程原理与实战四十二:锁与volatile的内存语义

    锁与volatile的内存语义 1.锁的内存语义 2.volatile内存语义 3.synchronized内存语义 4.Lock与synchronized的区别 5.ReentrantLock源码实 ...

  8. linux netstat查看服务和端口状态

    netstat可以查看linux系统中正在使用的服务和端口情况 常见参数 -a (all)显示所有选项,默认不显示LISTEN相关-t (tcp)仅显示tcp相关选项-u (udp)仅显示udp相关选 ...

  9. 全解析jQuery插件开发!很好很强大!

    最近对JQuery插件开发超级感兴趣,看到这样一篇好文章,可以说是<用实例一步步教你写Jquery插件>的十全大补,大家可以两篇结合着看看! jQuery插件的开发包括两种: 一种是类级别 ...

  10. java 创建最大堆

    最大堆的性质是除了根节点之外的所有节点(i)都需要满足A[PARENT(i)]>A[i],即其对应节点值小于其父节点对应值. 下面实现以数组int []a构建最大堆. public class ...