MySQL 5.5中怎么利用UNIX_TIMESTAMP实现分区
创始人
2024-12-20 18:01:07
0次


 
Sql代码 
show variables like '%partition%' 
如果系统输出如下结果,那么恭喜你,MySQL支持分区!
 
Sql代码 
variable_name            value 
have_partitioning        yes 
 
 
Sql代码 
CREATE TABLE quarterly_report_status ( 
report_id INT NOT NULL, 
    report_status VARCHAR(20) NOT NULL, 
    report_updated TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 
) 
PARTITION BY RANGE ( UNIX_TIMESTAMP(report_updated) ) ( 
    PARTITION p0 VALUES LESS THAN ( UNIX_TIMESTAMP('2011-01-01 00:00:00') ), 
    PARTITION p1 VALUES LESS THAN ( UNIX_TIMESTAMP('2011-02-01 00:00:00') ), 
    PARTITION p2 VALUES LESS THAN ( UNIX_TIMESTAMP('2011-03-01 00:00:00') ), 
    PARTITION p3 VALUES LESS THAN ( UNIX_TIMESTAMP('2011-04-01 00:00:00') ), 
    PARTITION p4 VALUES LESS THAN ( UNIX_TIMESTAMP('2011-05-01 00:00:00') ), 
    PARTITION p5 VALUES LESS THAN ( UNIX_TIMESTAMP('2011-06-01 00:00:00') ), 
    PARTITION p6 VALUES LESS THAN ( UNIX_TIMESTAMP('2011-07-01 00:00:00') ), 
    PARTITION p7 VALUES LESS THAN ( UNIX_TIMESTAMP('2011-08-01 00:00:00') ), 
    PARTITION p8 VALUES LESS THAN ( UNIX_TIMESTAMP('2011-09-01 00:00:00') ), 
    PARTITION p9 VALUES LESS THAN (MAXVALUE) 
); 
 
官方文档说从MySQL 5.1.43开始,除了TIMESTAMP 外,其他日期类型都不接受!
 
偶虽然没有尝试,至于你信不信,反正我是信了!
 
 
Explain Partitions SQL测试,看看是否有效:
 
Sql代码 
explain partitions select * FROM quarterly_report_status q where q.report_updated<'2011-02-01 00:00:00'; 
 输出:
 
| id | select_type | table | partitions | type | possible_keys | key  | key_len| ref     | rows | Extra       |
|  1 | SIMPLE        | q       | p0,p1       | ALL  | NULL              | NULL | NULL    | NULL |    2    | Using where |
1 row in set (0.00 sec)
 
非常棒,完美!
————————————————————————————————————————————————————
 
【转】相关函数:from_unixtime(date)
 
date为需要处理的参数(该参数是Unix 时间戳),可以是字段名,也可以直接是Unix 时间戳字符串
 
后面的 '%Y%m%d' 主要是将返回值格式化(可有可无)
 
例如:
>SELECT FROM_UNIXTIME( 1249488000, '%Y%m%d' ) 
->20071120
 
mysql>SELECT FROM_UNIXTIME( 1249488000, '%Y年%m月%d' )
->2007年11月20
 
UNIX_TIMESTAMP() 是与之相对正好相反的时间函数
 
UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)
 
  若无参数调用,则返回一个 Unix timestamp ('1970-01-01 00:00:00' GMT 之后的秒数) 作为无符号整数。若用date 来调用 UNIX_TIMESTAMP(),它会将参数值以'1970-01-01 00:00:00' GMT后的秒数的形式返回。date 可以是一个 DATE 字符串、一个 DATETIME字符串、一个 TIMESTAMP或一个当地时间的YYMMDD 或YYYMMDD格式的数字。
 
例如:
mysql> SELECT UNIX_TIMESTAMP() ; (执行使得时间:2009-08-06 10:10:40)
->1249524739
mysql> SELECT UNIX_TIMESTAMP('2009-08-06') ;
->1249488000
SELECT * FROM `student` WHERE regTime > UNIX_TIMESTAMP( curdate( ) )

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...