在问答模块看到这个问题,顺道复习了一下Mysql的日期函数。
先说下题目:
Java从数据库中按日期获取那一天的记录数量。
我想用Java要从Mysql数据里面,通过日期来获得当天的数据记录数量,一个数字,比如,获取今天的数据库的新增数据的数量,获取昨天的数据库中的新增的数据数量
数据库格式:
解决方案:
Mysql函数:
SUBSTR(字段名,从哪个字符开始,截取长度)
now()当前时间
ADDDATE(date-expression, INTERVAL expr type)操作时间
给个栗子:
给一个日期加2小时10分钟
SELECT ADDDATE('2011-09-11 2:42:36', INTERVAL '2:10' HOUR_MINUTE) AS NewDate
或者省略写法
SELECT '2011-09-11 2:42:36' + INTERVAL '2:10' HOUR_MINUTE AS NewDate
结果
NEWDATE
2011-09-11 04:52:36
然后有了个新需求,让我多学习一点。
统计一周的语句和一个月的语句。
这么写好像不是很严谨。不清楚需求是上一周还是距离今天往前7天。我写的就是往前数7天了。
DATEDIFF()算日期差。
好像就这么结束不太好。再去别的地方搞点来吧。
WEEKDAY(date) 返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)。
mysql> select WEEKDAY('1997-10-04 22:23:00');
-> 5
DAYOFYEAR(date) 返回date是一年中的第几日(在1到366范围内)
mysql> select DAYOFYEAR('1998-02-03');
-> 34
WEEK(date,first)返回date是一年的第几周(first默认值0,first取值1表示周一是周的开始,0从周日开始)
mysql> select WEEK('1998-02-20');
-> 7
MONTH(date) 返回date中的月份数值
YEAR(date) 返回date的年份(范围在1000到9999)
HOUR(time) 返回time的小时数(范围是0到23)
mysql> select HOUR('10:05:03');
-> 10
MINUTE(time) 返回time的分钟数(范围是0到59)
DATE_FORMAT(date,format) 根据format字符串格式化date值
差不多就这些吧,多了也记不住了。