1. 程式人生 > >Mysql函式表以及date函式的一些操作及用法

Mysql函式表以及date函式的一些操作及用法

    對於mysql和ms sql中提供了大量的對時間處理的函式;因為在實際的查詢操作中很多地方都存在對時間格式話的操作處理,所以這裡就拿mysql來說下如何去處理這些時間

  mysql 部分date函式的使用:

    mysql> select DATE_FORMAT('1997-10-04 22:23:00',
'%H %k %I %r %T %S %w');
-> '22 22 10 10:23:00 PM 22:23:00 00 6'
MySQL3.23中,在格式修飾符字元前需要%。在MySQL更早的版本中,%是可選的。 (具體更多的時間format格式請參考文章最後)

TIME_FORMAT(time,format)
這象上面的DATE_FORMAT()函式一樣使用,但是format字串只能包含處理小時、分鐘和秒的那些格式修飾符。
其他修飾符產生一個NULL值或0。
CURDATE()
 
CURRENT_DATE
以'YYYY-MM-DD'或YYYYMMDD格式返回今天日期值,取決於函式是在一個字串還是數字上下文被使用。
mysql> select CURDATE();
-> '1997-12-15'
mysql> select CURDATE() + 0;
-> 19971215

CURTIME()
 
CURRENT_TIME
以'HH:MM:SS'或HHMMSS格式返回當前時間值,取決於函式是在一個字串還是在數字的上下文被使用。
mysql> select CURTIME();
-> '23:50:26'
mysql> select CURTIME() + 0;
-> 235026

 

問題重放:

   

CREATE TABLE `test` (
  `id`
int(4) NOT NULL AUTO_INCREMENT,
  `mydate`
varchar(255) DEFAULT NULL,
 
PRIMARY KEY (`id`)
)

INSERT INTO `test` VALUES ('1', '2011-4-11 12:23:22');
INSERT INTO `test` VALUES ('2', '2011-4-11 12:21:22');
INSERT INTO `test`

VALUES ('3', '2011-4-10 12:23:22');
INSERT INTO `test` VALUES ('4', '2011-4-10 12:18:22');
INSERT INTO `test` VALUES ('5', '2011-4-12 12:23:22');
INSERT INTO `test` VALUES ('6', '2011-4-11 11:23:22');

現在要統計出 每天的記錄條數,如: 2011-4-11 有3條記錄,2011-4-10有2條,2011-4-11有一條記錄。
   可採用以下幾種方式處理:

  方法一:時間函式處理方式

    select Date(mydate),count(*)from test  group by date(mydate)

   或者使用select DATE_FORMAT(mydate,'%Y-%m-%d') ,count(*) from test group by  DATE_FORMAT(mydate,'%Y-%m-%d')二者效果都是一樣的。

  方法二:select mid(mydate,1,9),count(*)  from test  group by mid(mydate,1,9)

  使用字串的切割。此方法有侷限性,其操作也不方便,不建議使用此方法

 

 

更多的sql處理函式可以查閱http://www.w3school.com.cn/sql/

 

×××××××××××××××××××××××××××××××××××××××××××××

//Format 時間格式:

%W 星期名字(Sunday……Saturday)
%D 有英語字首的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 數字, 4 位
%y 年, 數字, 2 位
%a 縮寫的星期名字(Sun……Sat)
%d 月份中的天數, 數字(00……31)
%e 月份中的天數, 數字(0……31)
%m 月, 數字(01……12)
%c 月, 數字(1……12)
%b 縮寫的月份名字(Jan……Dec)
%j 一年中的天數(001……366)
%H 小時(00……23)
%k 小時(0……23)
%h 小時(01……12)
%I 小時(01……12)
%l 小時(1……12)
%i 分鐘, 數字(00……59)
%r 時間,12 小時(hh:mm:ss [AP]M)
%T 時間,24 小時(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM
%w 一個星期中的天數(0=Sunday ……6=Saturday )
%U 星期(0……52), 這裡星期天是星期的第一天
%u 星期(0……52), 這裡星期一是星期的第一天

//結束