和数据库相关的一些东东。
今天
select * from 表名 where to_days(时间字段名) = to_days(now());

昨天
SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1

7天
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名)

近30天
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名)

本月
SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )

上一月
SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( 时间字段名, '%Y%m' ) ) =1
一般来说,当我们的数据库的数据超过了100w记录的时候就应该考虑分表或者分区了,这次我来详细说说分表的一些方法。目前我所知道的方法都是MYISAM的,INNODB如何做分表并且保留事务和外键,我还不是很了解。

首先,我们需要想好到底分多少个表,前提当然是满足应用。这里我使用了一个比较简单的分表方法,就是根据自增id的尾数来分,也就是说分0-9一共10个表,其取值也很好做,就是对10进行取模。另外,还可以根据某一字段的md5值取其中几位进行分表,这样的话,可以分的表就很多了。
引用
CREATE TABLE table1 (
id int(11) NOT NULL auto_increment,
type varchar(2) default NULL,
date datetime default NULL,
PRIMARY KEY (id) )
ENGINE=MyISAM DEFAULT CHARSET=gbk;
INSERT INTO `table1 ` (`id`, `type`,`date`) VALUES
(1,'A', '2007-05-28 12:17:59'),
(2,'A', '2007-05-28 13:17:59'),
(3,'B', '2007-05-28 13:23:59'),
(4,'B', '2007-05-28 14:25:59'),
(5,'C', '2007-05-28 15:25:20'),
(6,'C', '2007-05-29 22:25:20'),
(7,'B', '2007-05-29 23:26:20'),
(8,'A', '2007-05-29 09:16:46'),
(9,'B', '2007-05-30 09:16:46');
按照每天日期,然然后分组统计,按A分为一组, B,C分为一组分别进行统计统计结果如下
date A B,C
2007-05-28 2 3
2007-05-29 1 2  
2009-05-30 0 1  

对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型。

这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最后30天以内:

mysql> SELECT something FROM table
WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;

DAYOFWEEK(date)
返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。
mysql> select DAYOFWEEK('1998-02-03');
-> 3

WEEKDAY(date)
返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。
mysql> select WEEKDAY('1997-10-04 22:23:00');
-> 5
mysql> select WEEKDAY('1997-11-05');
-> 2
这是大约半年前写在QQ空间里的,现在转过来吧

SAP Business One的序列号添加实在是太恶心了,难用又麻烦,不知道为啥,我们公司这个实施顾问一口咬定b1不能做序列号自动添加的功能,我算是服了,求人不如求己,自己来呗。东找找,西找找,这个问问,那个问问,终于还是有点收获,今天又头痛的厉害,昏睡一天,下午起来,突然有了灵感,大概知道怎么做了,于是乎动手,写,调试,5点半下班的时候搞出来了。下楼去跟使用的人说了,结果人先给我来了一句,“怎么别人下班的时候你才上班啊?”晕一个。。。

恩,把东西记录在这里,没准有人看见了会有需要呢。。

格式化查询语句:
execute UtmpGetSNArr $[$43.5.1] ,$[$43.37.69]


分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]