1. 程式人生 > 其它 >MySQL中DATE_FORMAT() 函式對日期格式化引數與JAVA中各種日期表示字母對比

MySQL中DATE_FORMAT() 函式對日期格式化引數與JAVA中各種日期表示字母對比

技術標籤:MySQLMySQL

MySQL 中 DATE_FORMAT() 函式對日期格式化引數與JAVA中各種日期表示字母對比

專案中的統計報表作的很多,需求中有按周、月統計資料的。查看了Mysql的API,發現Date_format是格式化日期的,看了Date_format()的具體說明後就用這個函式按周統計,sql大致如下:

select DATE_FORMAT(check_date ,'%X-%V') dates
       ,avg(weight)/10000 weight 
from ho_body 
where user_id=295
  andweight > 0 
  and (check_datebetween'2009-02-24' and '2010-02-24')
  group by dates

查出的結果為:

dates weight

2009-30 80.9
2009-31 80.425
2009-32 80.76666667
2009-33 80.75384615
2009-34 80.8
2009-35 79.88
2009-36 80.06
2009-37 79.875
2009-3879.075
2009-39 79.26666667
2009-40 79.16666667
2009-41 78.875
2009-42 78.33333333
2009-43 78.77272727
2009-44 77.625
2009-45 77.825
2009-46 77.575
2009-47 77.45
2009-48 81.25
2009-49 76.5
2009-50 77.83333333
2009-52 79.8
2010-02 79.2

%X

年,其中的星期日是周的第一天,4 位,與 %V 使用

%x

年,其中的星期一是周的第一天,4 位,與 %v 使用

%Y

年,4位

%y

年,2 位

難道%X只能與%V一起用表示年-周,並且週日為一週開始,

%x與%v一起用,表示 年-周,週一為一週開始?

再看到前面的

%V

周(01-53)星期日是一週的第一天,與%X使用

%v

周(01-53)星期一是一週的第一天,與%x使用

以"月"為週期做資料統計

%M

月名

%m

月,數值(00-1

select distinct DATE_FORMAT(check_date ,'%Y-%m') c1
       ,avg(weight)/10000 wei 
from ho_body 
where user_id=295
 and weight > 0 
  and (check_date between '2009-02-24' and '2009-10-31')
group by c1

結果展示:

c1 wei

2009-08 80.66388889
2009-09 79.70555556
2009-10 78.83714286

總結:

-- 以" 周/月 "為週期做資料統計

select DATE_FORMAT(check_date ,'%X-%V') -- 西方習慣, 以星期日為一週中的第一天

,DATE_FORMAT(check_date ,'%x-%v') -- 中國習慣, 以星期一為一週中的第一天

,DATE_FORMAT(check_date ,'%Y-%m')

Date_format可以使用的格式有:

格式

描述

%a

縮寫星期名

%b

縮寫月名

%c

月,數值

%D

帶有英文字首的月中的天

%d

月的天,數值(00-31)

%e

月的天,數值(0-31)

%f

微妙

%H

小時 (00-23)

%h

小時 (01-12)

%I

小時 (01-12)

%i

分鐘,數值(00-59)

%j

年的天 (001-366)

%k

小時 (0-23)

%l

小時 (1-12)

%M

月名

%m

月,數值(00-12)

%p

AM 或 PM

%r

時間,12-小時(hh:mm:ss AM 或 PM)

%S

秒(00-59)

%s

秒(00-59)

%T

時間, 24-小時 (hh:mm:ss)

%U

周 (00-53) 星期日是一週的第一天

%u

周 (00-53) 星期一是一週的第一天

%V

周(01-53)星期日是一週的第一天,與%X使用

%v

周(01-53)星期一是一週的第一天,與%x使用

%W

星期名

%w

周的天 (0=星期日, 6=星期六)

%X

年,其中的星期日是周的第一天,4位,與%V使用

%x

年,其中的星期一是周的第一天,4位,與%v使用

%Y

年,4位

%y

年,2 位

Mysql中還有另外幾種返回日期的函式,如:

SELECT EXTRACT(YEAR_MONTH FROMdatecolum ) -- 返回格式如200902

EXTRACT() 函式用於返回日期/時間的單獨部分,比如年、月、日、小時、分鐘等等。

語法

EXTRACT(unit FROM date)

date引數是合法的日期表示式。unit引數可以是下列的值:

Unit 值

MICROSECOND

SECOND

MINUTE

HOUR

DAY

WEEK

MONTH

QUARTER

YEAR

SECOND_MICROSECOND

MINUTE_MICROSECOND

MINUTE_SECOND

HOUR_MICROSECOND

HOUR_SECOND

HOUR_MINUTE

DAY_MICROSECOND

DAY_SECOND

DAY_MINUTE

DAY_HOUR

YEAR_MONTH

JAVA中各種日期表示字母

字母 日期或時間元素 表示 示例

G

Era 標誌符

Text

AD

y

Year

1996;96

M

年中的月份

Month

July;Jul;07

w

年中的週數

Number

27

W

月份中的週數

Number

2

D

年中的天數

Number

189

d

月份中的天數

Number

10

F

月份中的星期

Number

2

E

星期中的天數

Text

Tuesday;Tue

a

Am/pm 標記

Text

PM

H

一天中的小時數(0-23)

Number

0

k

一天中的小時數(1-24)

Number

24

K

am/pm 中的小時數(0-11)

Number

0

h

am/pm 中的小時數(1-12)

Number

12

mi

小時中的分鐘數

Number

30

s

分鐘中的秒數

Number

55

S

毫秒數

Number

978

z

時區

General time zone

Pacific Standard Time;PST;GMT-08:00

Z

時區

RFC 822 time zone

-0800