mysql時間和日期轉換的一些例子

2021-06-20 07:41:33 字數 4246 閱讀 6347

從時間秒中獲取 當天凌晨0點0分的秒數:

比如根據  1390467136 (2014-01-23 16:52:16)計算得到時間 2014-01-23 00:00:00對應的秒數,

方法如下: select unix_timestamp( date_format(from_unixtime( 1390467136 ),'%y-%m-%d')) from dual;

查詢結果:1390406400

根據時間秒數得到 星期幾,查詢方法如下:

select weekday(from_unixtime( 1390467136 ,'%y-%m-%d'))+1 as wday from dual;

查詢結果是: 4

下面來看看這裡面用到的一些函式的含義:

函式:from_unixtime

作用:將mysql中以int(11)儲存的時間以"yyyy-mm-dd"格式來顯示。

語法:from_unixtime(unix_timestamp,format)

返回表示 unix 時間標記的乙個字串,根據format字串格式化。format可以包含與date_format()函式列出的條目同樣的修飾符。

根據format字串格式化date值。

下列修飾符可以被用在format字串中:

%m 月名字(january……december)

%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), 這裡星期一是星期的第一天

%% 乙個文字「%」。

例子:

selectfrom_unixtime(

1390467136

,'%y-%m-%d %h:%i:%s'

) from dual;

date_format() 函式用於以不同的格式顯示日期/時間資料。

date_format(date,format)
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)

%pam 或 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 位

date_format(now(),'%b %d %y %h:%i %p')

date_format(now(),'%m-%d-%y')

date_format(now(),'%d %b %y')

date_format(now(),'%d %b %y %t:%f')

結果類似:

dec 29 2008 11:45 pm

12-29-2008

29 dec 08

29 dec 2008 16:25:46.635

mysql中的unix_timestamp函式有兩種型別供呼叫

1  無引數呼叫:unix_timestamp() 

返回值:自'1970-01-01 00:00:00'的到當前時間的秒數差

例子:select unix_timestamp()  => 1339123415

2  有引數呼叫:unix_timestamp(date)

其中date可以是乙個date字串,乙個datetime字串,乙個timestamp或者乙個當地時間的yymmdd或yyymmdd格式的數字

返回值:自'1970-01-01 00:00:00'與指定時間的秒數差

舉例說明:  www.2cto.com  

date字串格式:(日期型別)

select unix_timestamp(『2012-06-08』)       => 1339084800

select unix_timestamp(current_date())  =>1339084800

注:current_date ()的返回值是乙個date字串格式

以下幾種格式返回的結果相同:

select unix_timestamp('20120608');

select unix_timestamp('2012-6-8');

select unix_timestamp('2012-06-08');

結果都是:1339084800

datetime字串格式:(日期和時間的組合型別)

select unix_timestamp(『2012-06-08 10:48:55』)  => 1339123415

select unix_timestamp(now())  => 1339123415

注:now()的返回值是乙個datetime字串格式

mysql week… 函式:week(), weekofyear(), dayofweek(), weekday(), yearweek()
set @dt = '2008-08-08';
select week(@dt); -- 31
select week(@dt,3); -- 32
select weekofyear(@dt); -- 32
select dayofweek(@dt); -- 6
select weekday(@dt); -- 4
select yearweek(@dt); -- 200831
mysql week() 函式,可以有兩個引數,具體可看手冊。 weekofyear() 和 week() 一樣,都是計算「某天」是位於一年中的第幾周。 weekofyear(@dt) 等價於 week(@dt,3)。
mysql weekday() 函式和 dayofweek() 類似,都是返回「某天」在一周中的位置。不同點在於參考的標準, weekday:(0 = monday, 1 = tuesday, …, 6 = sunday); dayofweek:(1 = sunday, 2 = monday, …, 7 = saturday)
mysql yearweek() 函式,返回 year(2008) + week 位置(31)。

mysql時間戳和日期轉換

mysql有自帶的函式可以直接轉換,函式是from unixtime 資料表中 create time 儲存的是時間戳,如 1429063399 mysql的執行語句 日期合格可以自己定義 select from unixtime 1429063399,y m d h i s 輸出結果 mysql的...

mysql和php 一些時間函式

curdate 返回當前日期 2011 2 sql date 2011 03 23 返回表示式中的日期 2011 03 23 hour time 返回time中的小時 hour 10 23 12 返回10 second time 返回秒 minute time datediff 函式返回兩個日期之間...

mysql中的時間戳和日期時間的轉換

1 unix時間戳轉換為日期用函式 from unixtime select from unixtime 1156219870 輸出 2006 08 22 12 11 10 2 日期轉換為unix時間戳用函式 unix timestamp select unix timestamp 2006 11 ...