精华内容
下载资源
问答
  • MYSQL 获取当前日期日期格式获取系统日期: NOW()格式化日期: DATE_FORMAT(date, format)注: date:时间字段format:日期格式返回系统日期,输出 2009-12-25 14:38:59select now();输出 09-12-25select date_...

    MYSQL 获取当前日期及日期格式

    获取系统日期: NOW()

    格式化日期: DATE_FORMAT(date, format)

    注: date:时间字段

    format:日期格式

    返回系统日期,输出 2009-12-25 14:38:59

    select now();

    输出 09-12-25

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

    根据format字符串格式化date值:

    %S, %s 两位数字形式的秒( 00,01, ..., 59)

    %I, %i 两位数字形式的分( 00,01, ..., 59)

    %H 两位数字形式的小时,24 小时(00,01, ..., 23)

    %h 两位数字形式的小时,12 小时(01,02, ..., 12)

    %k 数字形式的小时,24 小时(0,1, ..., 23)

    %l 数字形式的小时,12 小时(1, 2, ..., 12)

    %T 24 小时的时间形式(hh:mm:ss)

    %r 12 小时的时间形式(hh:mm:ss AM 或hh:mm:ss PM)

    %p AM或PM

    %W 一周中每一天的名称(Sunday, Monday, ..., Saturday)

    %a 一周中每一天名称的缩写(Sun, Mon, ..., Sat)

    %d 两位数字表示月中的天数(00, 01,..., 31)

    %e 数字形式表示月中的天数(1, 2, ..., 31)

    %D 英文后缀表示月中的天数(1st, 2nd, 3rd,...)

    %w 以数字形式表示周中的天数( 0 = Sunday, 1=Monday, ..., 6=Saturday)

    %j 以三位数字表示年中的天数( 001, 002, ..., 366)

    %U 周(0, 1, 52),其中Sunday 为周中的第一天

    %u 周(0, 1, 52),其中Monday 为周中的第一天

    %M 月名(January, February, ..., December)

    %b 缩写的月名( January, February,...., December)

    %m 两位数字表示的月份(01, 02, ..., 12)

    %c 数字表示的月份(1, 2, ...., 12)

    %Y 四位数字表示的年份

    %y 两位数字表示的年份

    %% 直接值“%”

    curdate()

    MySQL 获得当前日期时间 函数

    1.1 获得当前日期+时间(date + time)函数:now()

    mysql> select now();

    +---------------------+

    | now() |

    +---------------------+

    | 2008-08-08 22:20:46 |

    +---------------------+

    除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数:

    current_timestamp()

    ,current_timestamp

    ,localtime()

    ,localtime

    ,localtimestamp -- (v4.0.6)

    ,localtimestamp() -- (v4.0.6)

    这些日期时间函数,都等同于 now()。鉴于 now() 函数简短易记,建议总是使用 now() 来替代上面列出的函数。

    1.2 获得当前日期+时间(date + time)函数:sysdate()

    sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。看下面的例子就明白了:

    mysql> select now(), sleep(3), now();

    +---------------------+----------+---------------------+

    | now() | sleep(3) | now() |

    +---------------------+----------+---------------------+

    | 2008-08-08 22:28:21 | 0 | 2008-08-08 22:28:21 |

    +---------------------+----------+---------------------+mysql> select sysdate(), sleep(3), sysdate();

    +---------------------+----------+---------------------+

    | sysdate() | sleep(3) | sysdate() |

    +---------------------+----------+---------------------+

    | 2008-08-08 22:28:41 | 0 | 2008-08-08 22:28:44 |

    +---------------------+----------+---------------------+

    可以看到,虽然中途 sleep 3 秒,但 now() 函数两次的时间值是相同的; sysdate() 函数两次得到的时间值相差

    3秒。MySQL Manual 中是这样描述 sysdate() 的:Return the time at which the

    functionexecutes。

    sysdate() 日期时间函数,一般情况下很少用到。

    2. 获得当前日期(date)函数:curdate()

    mysql> select curdate();

    +------------+

    | curdate() |

    +------------+

    | 2008-08-08 |

    +------------+

    其中,下面的两个日期函数等同于 curdate():

    current_date()

    ,current_date

    3. 获得当前时间(time)函数:curtime()

    mysql> select curtime();

    +-----------+

    | curtime() |

    +-----------+

    | 22:41:30 |

    +-----------+

    其中,下面的两个时间函数等同于 curtime():

    current_time()

    ,current_time

    4. 获得当前 UTC 日期时间函数:utc_date(), utc_time(), utc_timestamp()

    mysql> select utc_timestamp(), utc_date(), utc_time(), now()

    +---------------------+------------+------------+---------------------+

    | utc_timestamp() | utc_date() | utc_time() | now() |

    +---------------------+------------+------------+---------------------+

    | 2008-08-08 14:47:11 | 2008-08-08 | 14:47:11 | 2008-08-08 22:47:11 |

    +---------------------+------------+------------+---------------------+

    因为我国位于东八时区,所以本地时间 = UTC 时间 + 8 小时。UTC 时间在业务涉及多个国家和地区的时候,非常有用。

    二、MySQL 日期时间 Extract(选取) 函数。

    1. 选取日期时间的各个部分:日期、时间、年、季度、月、日、小时、分钟、秒、微秒

    set @dt = '2008-09-10 07:15:30.123456';

    select date(@dt); -- 2008-09-10

    select time(@dt); -- 07:15:30.123456

    select year(@dt); -- 2008

    select quarter(@dt); -- 3

    select month(@dt); -- 9

    select week(@dt); -- 36

    select day(@dt); -- 10

    select hour(@dt); -- 7

    select minute(@dt); -- 15

    select second(@dt); -- 30

    select microsecond(@dt); -- 123456

    2. MySQL Extract() 函数,可以上面实现类似的功能:

    set @dt = '2008-09-10 07:15:30.123456';

    select extract(year from @dt); -- 2008

    select extract(quarter from @dt); -- 3

    select extract(month from @dt); -- 9

    select extract(week from @dt); -- 36

    select extract(day from @dt); -- 10

    select extract(hour from @dt); -- 7

    select extract(minute from @dt); -- 15

    select extract(second from @dt); -- 30

    select extract(microsecond from @dt); -- 123456select extract(year_month from @dt); -- 200809

    select extract(day_hour from @dt); -- 1007

    select extract(day_minute from @dt); -- 100715

    select extract(day_second from @dt); -- 10071530

    select extract(day_microsecond from @dt); -- 10071530123456

    select extract(hour_minute from @dt); -- 715

    select extract(hour_second from @dt); -- 71530

    select extract(hour_microsecond from @dt); -- 71530123456

    select extract(minute_second from @dt); -- 1530

    select extract(minute_microsecond from @dt); -- 1530123456

    select extract(second_microsecond from @dt); -- 30123456

    MySQLExtract() 函数除了没有date(),time()

    的功能外,其他功能一应具全。并且还具有选取‘day_microsecond’等功能。注意这里不是只选取 day 和

    microsecond,而是从日期的 day 部分一直选取到 microsecond 部分。够强悍的吧!

    MySQL Extract() 函数唯一不好的地方在于:你需要多敲几次键盘。

    3. MySQL dayof… 函数:dayofweek(), dayofmonth(), dayofyear()

    分别返回日期参数,在一周、一月、一年中的位置。

    set @dt = '2008-08-08';

    select dayofweek(@dt); -- 6

    select dayofmonth(@dt); -- 8

    select dayofyear(@dt); -- 221

    日期 ‘2008-08-08′ 是一周中的第 6 天(1 = Sunday, 2 = Monday, …, 7 = Saturday);一月中的第 8 天;一年中的第 221 天。

    4. 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)。

    MySQLweekday() 函数和 dayofweek() 类似,都是返回“某天”在一周中的位置。不同点在于参考的标准, weekday:(0

    =Monday, 1 = Tuesday, …, 6 = Sunday); dayofweek:(1 = Sunday, 2 =

    Monday,…, 7 = Saturday)

    MySQL yearweek() 函数,返回 year(2008) + week 位置(31)。

    5. MySQL 返回星期和月份名称函数:dayname(), monthname()

    set @dt = '2008-08-08';

    select dayname(@dt); -- Friday

    select monthname(@dt); -- August

    思考,如何返回中文的名称呢?

    6. MySQL last_day() 函数:返回月份中的最后一天。

    select last_day('2008-02-01'); -- 2008-02-29

    select last_day('2008-08-08'); -- 2008-08-31

    MySQL last_day() 函数非常有用,比如我想得到当前月份中有多少天,可以这样来计算:

    mysql> select now(), day(last_day(now())) as days;

    +---------------------+------+

    | now() | days |

    +---------------------+------+

    | 2008-08-09 11:45:45 | 31 |

    +---------------------+------+ 三、MySQL 日期时间计算函数

    1. MySQL 为日期增加一个时间间隔:date_add()

    set @dt = now();

    select date_add(@dt, interval 1 day); -- add 1 day

    select date_add(@dt, interval 1 hour); -- add 1 hour

    select date_add(@dt, interval 1 minute); -- ...

    select date_add(@dt, interval 1 second);

    select date_add(@dt, interval 1 microsecond);

    select date_add(@dt, interval 1 week);

    select date_add(@dt, interval 1 month);

    select date_add(@dt, interval 1 quarter);

    select date_add(@dt, interval 1 year);select date_add(@dt, interval -1 day); -- sub 1 day

    MySQL adddate(), addtime()函数,可以用 date_add() 来替代。下面是 date_add() 实现 addtime() 功能示例:

    mysql> set @dt = '2008-08-09 12:12:33';

    mysql>

    mysql> select date_add(@dt, interval '01:15:30' hour_second);

    +------------------------------------------------+

    | date_add(@dt, interval '01:15:30' hour_second) |

    +------------------------------------------------+

    | 2008-08-09 13:28:03 |

    +------------------------------------------------+mysql> select date_add(@dt, interval '1 01:15:30' day_second);

    +-------------------------------------------------+

    | date_add(@dt, interval '1 01:15:30' day_second) |

    +-------------------------------------------------+

    | 2008-08-10 13:28:03 |

    +-------------------------------------------------+

    date_add() 函数,分别为 @dt 增加了“1小时 15分 30秒” 和 “1天 1小时 15分 30秒”。建议:总是使用 date_add() 日期时间函数来替代 adddate(), addtime()。

    2. MySQL 为日期减去一个时间间隔:date_sub()

    mysql> select date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second);

    +----------------------------------------------------------------+

    | date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second) |

    +----------------------------------------------------------------+

    | 1997-12-30 22:58:59 |

    +----------------------------------------------------------------+

    MySQL date_sub() 日期时间函数 和 date_add() 用法一致,不再赘述。另外,MySQL 中还有两个函数 subdate(), subtime(),建议,用 date_sub() 来替代。

    3. MySQL 另类日期函数:period_add(P,N), period_diff(P1,P2)

    函数参数“P” 的格式为“YYYYMM” 或者 “YYMM”,第二个参数“N” 表示增加或减去 N month(月)。

    MySQL period_add(P,N):日期加/减去N月。

    mysql> select period_add(200808,2), period_add(20080808,-2)

    +----------------------+-------------------------+

    | period_add(200808,2) | period_add(20080808,-2) |

    +----------------------+-------------------------+

    | 200810 | 20080806 |

    +----------------------+-------------------------+

    MySQL period_diff(P1,P2):日期 P1-P2,返回 N 个月。

    mysql> select period_diff(200808, 200801);

    +-----------------------------+

    | period_diff(200808, 200801) |

    +-----------------------------+

    | 7 |

    +-----------------------------+

    在 MySQL 中,这两个日期函数,一般情况下很少用到。

    4. MySQL 日期、时间相减函数:datediff(date1,date2), timediff(time1,time2)

    MySQL datediff(date1,date2):两个日期相减 date1 - date2,返回天数。

    select datediff('2008-08-08', '2008-08-01'); -- 7

    select datediff('2008-08-01', '2008-08-08'); -- -7

    MySQL timediff(time1,time2):两个日期相减 time1 - time2,返回 time 差值。

    select timediff('2008-08-08 08:08:08', '2008-08-08 00:00:00'); -- 08:08:08

    select timediff('08:08:08', '00:00:00'); -- 08:08:08

    注意:timediff(time1,time2) 函数的两个参数类型必须相同。

    四、MySQL 日期转换函数、时间转换函数

    1. MySQL (时间、秒)转换函数:time_to_sec(time), sec_to_time(seconds)

    select time_to_sec('01:00:05'); -- 3605

    select sec_to_time(3605); -- '01:00:05'

    2. MySQL (日期、天数)转换函数:to_days(date), from_days(days)

    select to_days('0000-00-00'); -- 0

    select to_days('2008-08-08'); -- 733627select from_days(0); -- '0000-00-00'

    select from_days(733627); -- '2008-08-08'

    3. MySQL Str to Date (字符串转换为日期)函数:str_to_date(str, format)

    select str_to_date('08/09/2008', '%m/%d/%Y'); -- 2008-08-09

    select str_to_date('08/09/08' , '%m/%d/%y'); -- 2008-08-09

    select str_to_date('08.09.2008', '%m.%d.%Y'); -- 2008-08-09

    select str_to_date('08:09:30', '%h:%i:%s'); -- 08:09:30

    select str_to_date('08.09.2008 08:09:30', '%m.%d.%Y %h:%i:%s'); -- 2008-08-09 08:09:30

    可以看到,str_to_date(str,format) 转换函数,可以把一些杂乱无章的字符串转换为日期格式。另外,它也可以转换为时间。“format” 可以参看 MySQL 手册。

    4. MySQL Date/Time to Str(日期/时间转换为字符串)函数:date_format(date,format), time_format(time,format)

    mysql> select date_format('2008-08-08 22:23:00', '%W %M %Y');

    +------------------------------------------------+

    | date_format('2008-08-08 22:23:00', '%W %M %Y') |

    +------------------------------------------------+

    | Friday August 2008 |

    +------------------------------------------------+mysql> select date_format('2008-08-08 22:23:01', '%Y%m%d%H%i%s');

    +----------------------------------------------------+

    | date_format('2008-08-08 22:23:01', '%Y%m%d%H%i%s') |

    +----------------------------------------------------+

    | 20080808222301 |

    +----------------------------------------------------+mysql> select time_format('22:23:01', '%H.%i.%s');

    +-------------------------------------+

    | time_format('22:23:01', '%H.%i.%s') |

    +-------------------------------------+

    | 22.23.01 |

    +-------------------------------------+

    MySQL 日期、时间转换函数:date_format(date,format), time_format(time,format) 能够把一个日期/时间转换成各种各样的字符串格式。它是 str_to_date(str,format) 函数的 一个逆转换。

    5. MySQL 获得国家地区时间格式函数:get_format()

    MySQL get_format() 语法:

    get_format(date|time|datetime, 'eur'|'usa'|'jis'|'iso'|'internal'

    MySQL get_format() 用法的全部示例:

    select get_format(date,'usa') ; -- '%m.%d.%Y'

    select get_format(date,'jis') ; -- '%Y-%m-%d'

    select get_format(date,'iso') ; -- '%Y-%m-%d'

    select get_format(date,'eur') ; -- '%d.%m.%Y'

    select get_format(date,'internal') ; -- '%Y%m%d'

    select get_format(datetime,'usa') ; -- '%Y-%m-%d %H.%i.%s'

    select get_format(datetime,'jis') ; -- '%Y-%m-%d %H:%i:%s'

    select get_format(datetime,'iso') ; -- '%Y-%m-%d %H:%i:%s'

    select get_format(datetime,'eur') ; -- '%Y-%m-%d %H.%i.%s'

    select get_format(datetime,'internal') ; -- '%Y%m%d%H%i%s'

    select get_format(time,'usa') ; -- '%h:%i:%s %p'

    select get_format(time,'jis') ; -- '%H:%i:%s'

    select get_format(time,'iso') ; -- '%H:%i:%s'

    select get_format(time,'eur') ; -- '%H.%i.%s'

    select get_format(time,'internal') ; -- '%H%i%s'

    MySQL get_format() 函数在实际中用到机会的比较少。

    6. MySQL 拼凑日期、时间函数:makdedate(year,dayofyear), maketime(hour,minute,second)

    select makedate(2001,31); -- '2001-01-31'

    select makedate(2001,32); -- '2001-02-01'select maketime(12,15,30); -- '12:15:30' 五、MySQL 时间戳(Timestamp)函数

    1. MySQL 获得当前时间戳函数:current_timestamp, current_timestamp()

    mysql> select current_timestamp, current_timestamp();

    +---------------------+---------------------+

    | current_timestamp | current_timestamp() |

    +---------------------+---------------------+

    | 2008-08-09 23:22:24 | 2008-08-09 23:22:24 |

    +---------------------+---------------------+

    2. MySQL (Unix 时间戳、日期)转换函数:

    unix_timestamp(),

    unix_timestamp(date),

    from_unixtime(unix_timestamp),

    from_unixtime(unix_timestamp,format)

    下面是示例:

    select unix_timestamp(); -- 1218290027

    select unix_timestamp('2008-08-08'); -- 1218124800

    select unix_timestamp('2008-08-08 12:30:00'); -- 1218169800select from_unixtime(1218290027); -- '2008-08-09 21:53:47'

    select from_unixtime(1218124800); -- '2008-08-08 00:00:00'

    selectfrom_unixtime(1218169800); -- '2008-08-08

    12:30:00'selectfrom_unixtime(1218169800, '%Y %D %M %h:%i:%s %x'); --

    '2008 8th August12:30:00 2008'

    3. MySQL 时间戳(timestamp)转换、增、减函数:

    timestamp(date) -- date to timestamp

    timestamp(dt,time) -- dt + time

    timestampadd(unit,interval,datetime_expr) --

    timestampdiff(unit,datetime_expr1,datetime_expr2) --

    请看示例部分:

    select timestamp('2008-08-08'); -- 2008-08-08 00:00:00

    select timestamp('2008-08-08 08:00:00', '01:01:01'); -- 2008-08-08 09:01:01

    selecttimestamp('2008-08-08 08:00:00', '10 01:01:01'); --

    2008-08-1809:01:01select timestampadd(day, 1, '2008-08-08 08:00:00');

    --2008-08-09 08:00:00

    select date_add('2008-08-08 08:00:00', interval 1 day); -- 2008-08-09 08:00:00

    MySQL timestampadd() 函数类似于 date_add()。

    select timestampdiff(year,'2002-05-01','2001-01-01'); -- -1

    select timestampdiff(day ,'2002-05-01','2001-01-01'); -- -485

    select timestampdiff(hour,'2008-08-08 12:00:00','2008-08-08 00:00:00'); -- -12

    select datediff('2008-08-08 12:00:00', '2008-08-01 00:00:00'); -- 7

    MySQL timestampdiff() 函数就比 datediff() 功能强多了,datediff() 只能计算两个日期(date)之间相差的天数。

    六、MySQL

    时区(timezone)转换函数convert_tz(dt,from_tz,to_tz)selectconvert_tz('2008-08-08

    12:00:00', '+08:00', '+00:00'); -- 2008-08-0804:00:00

    时区转换也可以通过 date_add, date_sub, timestampadd 来实现。

    select date_add('2008-08-08 12:00:00', interval -8 hour); -- 2008-08-08 04:00:00

    select date_sub('2008-08-08 12:00:00', interval 8 hour); -- 2008-08-08 04:00:00

    select timestampadd(hour, -8, '2008-08-08 12:00:00'); -- 2008-08-08 04:00:00

    展开全文
  • MYSQL 获取当前日期日期格式获取系统日期: NOW()格式化日期: DATE_FORMAT(date, format)注: date:时间字段format:日期格式返回系统日期,输出 2009-12-25 14:38:59select now();输出 09-12-25select date_...

    MYSQL 获取当前日期及日期格式

    获取系统日期: NOW()

    格式化日期: DATE_FORMAT(date, format)

    注: date:时间字段

    format:日期格式

    返回系统日期,输出 2009-12-25 14:38:59

    select now();

    输出 09-12-25

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

    根据format字符串格式化date值:

    %S, %s 两位数字形式的秒( 00,01, ..., 59)

    %I, %i 两位数字形式的分( 00,01, ..., 59)

    %H 两位数字形式的小时,24 小时(00,01, ..., 23)

    %h 两位数字形式的小时,12 小时(01,02, ..., 12)

    %k 数字形式的小时,24 小时(0,1, ..., 23)

    %l 数字形式的小时,12 小时(1, 2, ..., 12)

    %T 24 小时的时间形式(hh:mm:ss)

    %r 12 小时的时间形式(hh:mm:ss AM 或hh:mm:ss PM)

    %p AM或PM

    %W 一周中每一天的名称(Sunday, Monday, ..., Saturday)

    %a 一周中每一天名称的缩写(Sun, Mon, ..., Sat)

    %d 两位数字表示月中的天数(00, 01,..., 31)

    %e 数字形式表示月中的天数(1, 2, ..., 31)

    %D 英文后缀表示月中的天数(1st, 2nd, 3rd,...)

    %w 以数字形式表示周中的天数( 0 = Sunday, 1=Monday, ..., 6=Saturday)

    %j 以三位数字表示年中的天数( 001, 002, ..., 366)

    %U 周(0, 1, 52),其中Sunday 为周中的第一天

    %u 周(0, 1, 52),其中Monday 为周中的第一天

    %M 月名(January, February, ..., December)

    %b 缩写的月名( January, February,...., December)

    %m 两位数字表示的月份(01, 02, ..., 12)

    %c 数字表示的月份(1, 2, ...., 12)

    %Y 四位数字表示的年份

    %y 两位数字表示的年份

    %% 直接值“%”

    curdate()

    MySQL 获得当前日期时间 函数

    1.1 获得当前日期+时间(date + time)函数:now()

    mysql> select now();

    +---------------------+

    | now() |

    +---------------------+

    | 2008-08-08 22:20:46 |

    +---------------------+

    除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数:

    current_timestamp()

    ,current_timestamp

    ,localtime()

    ,localtime

    ,localtimestamp -- (v4.0.6)

    ,localtimestamp() -- (v4.0.6)

    这些日期时间函数,都等同于 now()。鉴于 now() 函数简短易记,建议总是使用 now() 来替代上面列出的函数。

    1.2 获得当前日期+时间(date + time)函数:sysdate()

    sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。看下面的例子就明白了:

    mysql> select now(), sleep(3), now();

    +---------------------+----------+---------------------+

    | now() | sleep(3) | now() |

    +---------------------+----------+---------------------+

    | 2008-08-08 22:28:21 | 0 | 2008-08-08 22:28:21 |

    +---------------------+----------+---------------------+mysql> select sysdate(), sleep(3), sysdate();

    +---------------------+----------+---------------------+

    | sysdate() | sleep(3) | sysdate() |

    +---------------------+----------+---------------------+

    | 2008-08-08 22:28:41 | 0 | 2008-08-08 22:28:44 |

    +---------------------+----------+---------------------+

    可以看到,虽然中途 sleep 3 秒,但 now() 函数两次的时间值是相同的; sysdate() 函数两次得到的时间值相差

    3秒。MySQL Manual 中是这样描述 sysdate() 的:Return the time at which the

    functionexecutes。

    sysdate() 日期时间函数,一般情况下很少用到。

    2. 获得当前日期(date)函数:curdate()

    mysql> select curdate();

    +------------+

    | curdate() |

    +------------+

    | 2008-08-08 |

    +------------+

    其中,下面的两个日期函数等同于 curdate():

    current_date()

    ,current_date

    3. 获得当前时间(time)函数:curtime()

    mysql> select curtime();

    +-----------+

    | curtime() |

    +-----------+

    | 22:41:30 |

    +-----------+

    其中,下面的两个时间函数等同于 curtime():

    current_time()

    ,current_time

    4. 获得当前 UTC 日期时间函数:utc_date(), utc_time(), utc_timestamp()

    mysql> select utc_timestamp(), utc_date(), utc_time(), now()

    +---------------------+------------+------------+---------------------+

    | utc_timestamp() | utc_date() | utc_time() | now() |

    +---------------------+------------+------------+---------------------+

    | 2008-08-08 14:47:11 | 2008-08-08 | 14:47:11 | 2008-08-08 22:47:11 |

    +---------------------+------------+------------+---------------------+

    因为我国位于东八时区,所以本地时间 = UTC 时间 + 8 小时。UTC 时间在业务涉及多个国家和地区的时候,非常有用。

    二、MySQL 日期时间 Extract(选取) 函数。

    1. 选取日期时间的各个部分:日期、时间、年、季度、月、日、小时、分钟、秒、微秒

    set @dt = '2008-09-10 07:15:30.123456';

    select date(@dt); -- 2008-09-10

    select time(@dt); -- 07:15:30.123456

    select year(@dt); -- 2008

    select quarter(@dt); -- 3

    select month(@dt); -- 9

    select week(@dt); -- 36

    select day(@dt); -- 10

    select hour(@dt); -- 7

    select minute(@dt); -- 15

    select second(@dt); -- 30

    select microsecond(@dt); -- 123456

    2. MySQL Extract() 函数,可以上面实现类似的功能:

    set @dt = '2008-09-10 07:15:30.123456';

    select extract(year from @dt); -- 2008

    select extract(quarter from @dt); -- 3

    select extract(month from @dt); -- 9

    select extract(week from @dt); -- 36

    select extract(day from @dt); -- 10

    select extract(hour from @dt); -- 7

    select extract(minute from @dt); -- 15

    select extract(second from @dt); -- 30

    select extract(microsecond from @dt); -- 123456select extract(year_month from @dt); -- 200809

    select extract(day_hour from @dt); -- 1007

    select extract(day_minute from @dt); -- 100715

    select extract(day_second from @dt); -- 10071530

    select extract(day_microsecond from @dt); -- 10071530123456

    select extract(hour_minute from @dt); -- 715

    select extract(hour_second from @dt); -- 71530

    select extract(hour_microsecond from @dt); -- 71530123456

    select extract(minute_second from @dt); -- 1530

    select extract(minute_microsecond from @dt); -- 1530123456

    select extract(second_microsecond from @dt); -- 30123456

    MySQLExtract() 函数除了没有date(),time()

    的功能外,其他功能一应具全。并且还具有选取‘day_microsecond’等功能。注意这里不是只选取 day 和

    microsecond,而是从日期的 day 部分一直选取到 microsecond 部分。够强悍的吧!

    MySQL Extract() 函数唯一不好的地方在于:你需要多敲几次键盘。

    3. MySQL dayof… 函数:dayofweek(), dayofmonth(), dayofyear()

    分别返回日期参数,在一周、一月、一年中的位置。

    set @dt = '2008-08-08';

    select dayofweek(@dt); -- 6

    select dayofmonth(@dt); -- 8

    select dayofyear(@dt); -- 221

    日期 ‘2008-08-08′ 是一周中的第 6 天(1 = Sunday, 2 = Monday, …, 7 = Saturday);一月中的第 8 天;一年中的第 221 天。

    4. 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)。

    MySQLweekday() 函数和 dayofweek() 类似,都是返回“某天”在一周中的位置。不同点在于参考的标准, weekday:(0

    =Monday, 1 = Tuesday, …, 6 = Sunday); dayofweek:(1 = Sunday, 2 =

    Monday,…, 7 = Saturday)

    MySQL yearweek() 函数,返回 year(2008) + week 位置(31)。

    5. MySQL 返回星期和月份名称函数:dayname(), monthname()

    set @dt = '2008-08-08';

    select dayname(@dt); -- Friday

    select monthname(@dt); -- August

    思考,如何返回中文的名称呢?

    6. MySQL last_day() 函数:返回月份中的最后一天。

    select last_day('2008-02-01'); -- 2008-02-29

    select last_day('2008-08-08'); -- 2008-08-31

    MySQL last_day() 函数非常有用,比如我想得到当前月份中有多少天,可以这样来计算:

    mysql> select now(), day(last_day(now())) as days;

    +---------------------+------+

    | now() | days |

    +---------------------+------+

    | 2008-08-09 11:45:45 | 31 |

    +---------------------+------+ 三、MySQL 日期时间计算函数

    1. MySQL 为日期增加一个时间间隔:date_add()

    set @dt = now();

    select date_add(@dt, interval 1 day); -- add 1 day

    select date_add(@dt, interval 1 hour); -- add 1 hour

    select date_add(@dt, interval 1 minute); -- ...

    select date_add(@dt, interval 1 second);

    select date_add(@dt, interval 1 microsecond);

    select date_add(@dt, interval 1 week);

    select date_add(@dt, interval 1 month);

    select date_add(@dt, interval 1 quarter);

    select date_add(@dt, interval 1 year);select date_add(@dt, interval -1 day); -- sub 1 day

    MySQL adddate(), addtime()函数,可以用 date_add() 来替代。下面是 date_add() 实现 addtime() 功能示例:

    mysql> set @dt = '2008-08-09 12:12:33';

    mysql>

    mysql> select date_add(@dt, interval '01:15:30' hour_second);

    +------------------------------------------------+

    | date_add(@dt, interval '01:15:30' hour_second) |

    +------------------------------------------------+

    | 2008-08-09 13:28:03 |

    +------------------------------------------------+mysql> select date_add(@dt, interval '1 01:15:30' day_second);

    +-------------------------------------------------+

    | date_add(@dt, interval '1 01:15:30' day_second) |

    +-------------------------------------------------+

    | 2008-08-10 13:28:03 |

    +-------------------------------------------------+

    date_add() 函数,分别为 @dt 增加了“1小时 15分 30秒” 和 “1天 1小时 15分 30秒”。建议:总是使用 date_add() 日期时间函数来替代 adddate(), addtime()。

    2. MySQL 为日期减去一个时间间隔:date_sub()

    mysql> select date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second);

    +----------------------------------------------------------------+

    | date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second) |

    +----------------------------------------------------------------+

    | 1997-12-30 22:58:59 |

    +----------------------------------------------------------------+

    MySQL date_sub() 日期时间函数 和 date_add() 用法一致,不再赘述。另外,MySQL 中还有两个函数 subdate(), subtime(),建议,用 date_sub() 来替代。

    3. MySQL 另类日期函数:period_add(P,N), period_diff(P1,P2)

    函数参数“P” 的格式为“YYYYMM” 或者 “YYMM”,第二个参数“N” 表示增加或减去 N month(月)。

    MySQL period_add(P,N):日期加/减去N月。

    mysql> select period_add(200808,2), period_add(20080808,-2)

    +----------------------+-------------------------+

    | period_add(200808,2) | period_add(20080808,-2) |

    +----------------------+-------------------------+

    | 200810 | 20080806 |

    +----------------------+-------------------------+

    MySQL period_diff(P1,P2):日期 P1-P2,返回 N 个月。

    mysql> select period_diff(200808, 200801);

    +-----------------------------+

    | period_diff(200808, 200801) |

    +-----------------------------+

    | 7 |

    +-----------------------------+

    在 MySQL 中,这两个日期函数,一般情况下很少用到。

    4. MySQL 日期、时间相减函数:datediff(date1,date2), timediff(time1,time2)

    MySQL datediff(date1,date2):两个日期相减 date1 - date2,返回天数。

    select datediff('2008-08-08', '2008-08-01'); -- 7

    select datediff('2008-08-01', '2008-08-08'); -- -7

    MySQL timediff(time1,time2):两个日期相减 time1 - time2,返回 time 差值。

    select timediff('2008-08-08 08:08:08', '2008-08-08 00:00:00'); -- 08:08:08

    select timediff('08:08:08', '00:00:00'); -- 08:08:08

    注意:timediff(time1,time2) 函数的两个参数类型必须相同。

    四、MySQL 日期转换函数、时间转换函数

    1. MySQL (时间、秒)转换函数:time_to_sec(time), sec_to_time(seconds)

    select time_to_sec('01:00:05'); -- 3605

    select sec_to_time(3605); -- '01:00:05'

    2. MySQL (日期、天数)转换函数:to_days(date), from_days(days)

    select to_days('0000-00-00'); -- 0

    select to_days('2008-08-08'); -- 733627select from_days(0); -- '0000-00-00'

    select from_days(733627); -- '2008-08-08'

    3. MySQL Str to Date (字符串转换为日期)函数:str_to_date(str, format)

    select str_to_date('08/09/2008', '%m/%d/%Y'); -- 2008-08-09

    select str_to_date('08/09/08' , '%m/%d/%y'); -- 2008-08-09

    select str_to_date('08.09.2008', '%m.%d.%Y'); -- 2008-08-09

    select str_to_date('08:09:30', '%h:%i:%s'); -- 08:09:30

    select str_to_date('08.09.2008 08:09:30', '%m.%d.%Y %h:%i:%s'); -- 2008-08-09 08:09:30

    可以看到,str_to_date(str,format) 转换函数,可以把一些杂乱无章的字符串转换为日期格式。另外,它也可以转换为时间。“format” 可以参看 MySQL 手册。

    4. MySQL Date/Time to Str(日期/时间转换为字符串)函数:date_format(date,format), time_format(time,format)

    mysql> select date_format('2008-08-08 22:23:00', '%W %M %Y');

    +------------------------------------------------+

    | date_format('2008-08-08 22:23:00', '%W %M %Y') |

    +------------------------------------------------+

    | Friday August 2008 |

    +------------------------------------------------+mysql> select date_format('2008-08-08 22:23:01', '%Y%m%d%H%i%s');

    +----------------------------------------------------+

    | date_format('2008-08-08 22:23:01', '%Y%m%d%H%i%s') |

    +----------------------------------------------------+

    | 20080808222301 |

    +----------------------------------------------------+mysql> select time_format('22:23:01', '%H.%i.%s');

    +-------------------------------------+

    | time_format('22:23:01', '%H.%i.%s') |

    +-------------------------------------+

    | 22.23.01 |

    +-------------------------------------+

    MySQL 日期、时间转换函数:date_format(date,format), time_format(time,format) 能够把一个日期/时间转换成各种各样的字符串格式。它是 str_to_date(str,format) 函数的 一个逆转换。

    5. MySQL 获得国家地区时间格式函数:get_format()

    MySQL get_format() 语法:

    get_format(date|time|datetime, 'eur'|'usa'|'jis'|'iso'|'internal'

    MySQL get_format() 用法的全部示例:

    select get_format(date,'usa') ; -- '%m.%d.%Y'

    select get_format(date,'jis') ; -- '%Y-%m-%d'

    select get_format(date,'iso') ; -- '%Y-%m-%d'

    select get_format(date,'eur') ; -- '%d.%m.%Y'

    select get_format(date,'internal') ; -- '%Y%m%d'

    select get_format(datetime,'usa') ; -- '%Y-%m-%d %H.%i.%s'

    select get_format(datetime,'jis') ; -- '%Y-%m-%d %H:%i:%s'

    select get_format(datetime,'iso') ; -- '%Y-%m-%d %H:%i:%s'

    select get_format(datetime,'eur') ; -- '%Y-%m-%d %H.%i.%s'

    select get_format(datetime,'internal') ; -- '%Y%m%d%H%i%s'

    select get_format(time,'usa') ; -- '%h:%i:%s %p'

    select get_format(time,'jis') ; -- '%H:%i:%s'

    select get_format(time,'iso') ; -- '%H:%i:%s'

    select get_format(time,'eur') ; -- '%H.%i.%s'

    select get_format(time,'internal') ; -- '%H%i%s'

    MySQL get_format() 函数在实际中用到机会的比较少。

    6. MySQL 拼凑日期、时间函数:makdedate(year,dayofyear), maketime(hour,minute,second)

    select makedate(2001,31); -- '2001-01-31'

    select makedate(2001,32); -- '2001-02-01'select maketime(12,15,30); -- '12:15:30' 五、MySQL 时间戳(Timestamp)函数

    1. MySQL 获得当前时间戳函数:current_timestamp, current_timestamp()

    mysql> select current_timestamp, current_timestamp();

    +---------------------+---------------------+

    | current_timestamp | current_timestamp() |

    +---------------------+---------------------+

    | 2008-08-09 23:22:24 | 2008-08-09 23:22:24 |

    +---------------------+---------------------+

    2. MySQL (Unix 时间戳、日期)转换函数:

    unix_timestamp(),

    unix_timestamp(date),

    from_unixtime(unix_timestamp),

    from_unixtime(unix_timestamp,format)

    下面是示例:

    select unix_timestamp(); -- 1218290027

    select unix_timestamp('2008-08-08'); -- 1218124800

    select unix_timestamp('2008-08-08 12:30:00'); -- 1218169800select from_unixtime(1218290027); -- '2008-08-09 21:53:47'

    select from_unixtime(1218124800); -- '2008-08-08 00:00:00'

    selectfrom_unixtime(1218169800); -- '2008-08-08

    12:30:00'selectfrom_unixtime(1218169800, '%Y %D %M %h:%i:%s %x'); --

    '2008 8th August12:30:00 2008'

    3. MySQL 时间戳(timestamp)转换、增、减函数:

    timestamp(date) -- date to timestamp

    timestamp(dt,time) -- dt + time

    timestampadd(unit,interval,datetime_expr) --

    timestampdiff(unit,datetime_expr1,datetime_expr2) --

    请看示例部分:

    select timestamp('2008-08-08'); -- 2008-08-08 00:00:00

    select timestamp('2008-08-08 08:00:00', '01:01:01'); -- 2008-08-08 09:01:01

    selecttimestamp('2008-08-08 08:00:00', '10 01:01:01'); --

    2008-08-1809:01:01select timestampadd(day, 1, '2008-08-08 08:00:00');

    --2008-08-09 08:00:00

    select date_add('2008-08-08 08:00:00', interval 1 day); -- 2008-08-09 08:00:00

    MySQL timestampadd() 函数类似于 date_add()。

    select timestampdiff(year,'2002-05-01','2001-01-01'); -- -1

    select timestampdiff(day ,'2002-05-01','2001-01-01'); -- -485

    select timestampdiff(hour,'2008-08-08 12:00:00','2008-08-08 00:00:00'); -- -12

    select datediff('2008-08-08 12:00:00', '2008-08-01 00:00:00'); -- 7

    MySQL timestampdiff() 函数就比 datediff() 功能强多了,datediff() 只能计算两个日期(date)之间相差的天数。

    六、MySQL

    时区(timezone)转换函数convert_tz(dt,from_tz,to_tz)selectconvert_tz('2008-08-08

    12:00:00', '+08:00', '+00:00'); -- 2008-08-0804:00:00

    时区转换也可以通过 date_add, date_sub, timestampadd 来实现。

    select date_add('2008-08-08 12:00:00', interval -8 hour); -- 2008-08-08 04:00:00

    select date_sub('2008-08-08 12:00:00', interval 8 hour); -- 2008-08-08 04:00:00

    select timestampadd(hour, -8, '2008-08-08 12:00:00'); -- 2008-08-08 04:00:00

    展开全文
  • MYSQL 获取当前日期日期格式 获取系统日期: NOW() 格式化日期: DATE_FORMAT(date, format) 注: date:时间字段 format:日期格式 返回系统日期,输出 2009-12-25 14:38:59 select now(); 输出 09-12-25 ...

    MYSQL 获取当前日期及日期格式
    获取系统日期: NOW()
    格式化日期: DATE_FORMAT(date, format)
    注: date:时间字段
    format:日期格式

    返回系统日期,输出 2009-12-25 14:38:59
    select now();
    输出 09-12-25
    select date_format(now(),'%y-%m-%d');

    根据format字符串格式化date值:

    %S, %s 两位数字形式的秒( 00,01, ..., 59)
    %I, %i 两位数字形式的分( 00,01, ..., 59)
    %H 两位数字形式的小时,24 小时(00,01, ..., 23)
    %h 两位数字形式的小时,12 小时(01,02, ..., 12)
    %k 数字形式的小时,24 小时(0,1, ..., 23)
    %l 数字形式的小时,12 小时(1, 2, ..., 12)
    %T 24 小时的时间形式(hh:mm:ss)
    %r 12 小时的时间形式(hh:mm:ss AM 或hh:mm:ss PM)
    %p AM或PM
    %W 一周中每一天的名称(Sunday, Monday, ..., Saturday)
    %a 一周中每一天名称的缩写(Sun, Mon, ..., Sat)
    %d 两位数字表示月中的天数(00, 01,..., 31)
    %e 数字形式表示月中的天数(1, 2, ..., 31)
    %D 英文后缀表示月中的天数(1st, 2nd, 3rd,...)
    %w 以数字形式表示周中的天数( 0 = Sunday, 1=Monday, ..., 6=Saturday)
    %j 以三位数字表示年中的天数( 001, 002, ..., 366)
    %U 周(0, 1, 52),其中Sunday 为周中的第一天
    %u 周(0, 1, 52),其中Monday 为周中的第一天
    %M 月名(January, February, ..., December)
    %b 缩写的月名( January, February,...., December)
    %m 两位数字表示的月份(01, 02, ..., 12)
    %c 数字表示的月份(1, 2, ...., 12)
    %Y 四位数字表示的年份
    %y 两位数字表示的年份
    %% 直接值“%”

     

     

    curdate()

     

    MySQL 获得当前日期时间 函数
    1.1 获得当前日期+时间(date + time)函数:now()

    mysql> select now();

    +---------------------+
    | now() |
    +---------------------+
    | 2008-08-08 22:20:46 |
    +---------------------+
    除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数:

    current_timestamp()
    ,current_timestamp
    ,localtime()
    ,localtime
    ,localtimestamp -- (v4.0.6)
    ,localtimestamp() -- (v4.0.6)
    这些日期时间函数,都等同于 now()。鉴于 now() 函数简短易记,建议总是使用 now() 来替代上面列出的函数。

    1.2 获得当前日期+时间(date + time)函数:sysdate()

    sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。看下面的例子就明白了:

    mysql> select now(), sleep(3), now();

    +---------------------+----------+---------------------+
    | now() | sleep(3) | now() |
    +---------------------+----------+---------------------+
    | 2008-08-08 22:28:21 | 0 | 2008-08-08 22:28:21 |
    +---------------------+----------+---------------------+mysql> select sysdate(), sleep(3), sysdate();

    +---------------------+----------+---------------------+
    | sysdate() | sleep(3) | sysdate() |
    +---------------------+----------+---------------------+
    | 2008-08-08 22:28:41 | 0 | 2008-08-08 22:28:44 |
    +---------------------+----------+---------------------+
    可以看到,虽然中途 sleep 3 秒,但 now() 函数两次的时间值是相同的; sysdate() 函数两次得到的时间值相差 3秒。MySQL Manual 中是这样描述 sysdate() 的:Return the time at which the functionexecutes。

    sysdate() 日期时间函数,一般情况下很少用到。

    2. 获得当前日期(date)函数:curdate()

    mysql> select curdate();

    +------------+
    | curdate() |
    +------------+
    | 2008-08-08 |
    +------------+
    其中,下面的两个日期函数等同于 curdate():

    current_date()
    ,current_date
    3. 获得当前时间(time)函数:curtime()

    mysql> select curtime();

    +-----------+
    | curtime() |
    +-----------+
    | 22:41:30 |
    +-----------+
    其中,下面的两个时间函数等同于 curtime():

    current_time()
    ,current_time
    4. 获得当前 UTC 日期时间函数:utc_date(), utc_time(), utc_timestamp()

    mysql> select utc_timestamp(), utc_date(), utc_time(), now()

    +---------------------+------------+------------+---------------------+
    | utc_timestamp() | utc_date() | utc_time() | now() |
    +---------------------+------------+------------+---------------------+
    | 2008-08-08 14:47:11 | 2008-08-08 | 14:47:11 | 2008-08-08 22:47:11 |
    +---------------------+------------+------------+---------------------+
    因为我国位于东八时区,所以本地时间 = UTC 时间 + 8 小时。UTC 时间在业务涉及多个国家和地区的时候,非常有用。

    二、MySQL 日期时间 Extract(选取) 函数。
    1. 选取日期时间的各个部分:日期、时间、年、季度、月、日、小时、分钟、秒、微秒

    set @dt = '2008-09-10 07:15:30.123456';

    select date(@dt); -- 2008-09-10
    select time(@dt); -- 07:15:30.123456
    select year(@dt); -- 2008
    select quarter(@dt); -- 3
    select month(@dt); -- 9
    select week(@dt); -- 36
    select day(@dt); -- 10
    select hour(@dt); -- 7
    select minute(@dt); -- 15
    select second(@dt); -- 30
    select microsecond(@dt); -- 123456
    2. MySQL Extract() 函数,可以上面实现类似的功能:

    set @dt = '2008-09-10 07:15:30.123456';

    select extract(year from @dt); -- 2008
    select extract(quarter from @dt); -- 3
    select extract(month from @dt); -- 9
    select extract(week from @dt); -- 36
    select extract(day from @dt); -- 10
    select extract(hour from @dt); -- 7
    select extract(minute from @dt); -- 15
    select extract(second from @dt); -- 30
    select extract(microsecond from @dt); -- 123456select extract(year_month from @dt); -- 200809
    select extract(day_hour from @dt); -- 1007
    select extract(day_minute from @dt); -- 100715
    select extract(day_second from @dt); -- 10071530
    select extract(day_microsecond from @dt); -- 10071530123456
    select extract(hour_minute from @dt); -- 715
    select extract(hour_second from @dt); -- 71530
    select extract(hour_microsecond from @dt); -- 71530123456
    select extract(minute_second from @dt); -- 1530
    select extract(minute_microsecond from @dt); -- 1530123456
    select extract(second_microsecond from @dt); -- 30123456
    MySQLExtract() 函数除了没有date(),time() 的功能外,其他功能一应具全。并且还具有选取‘day_microsecond’等功能。注意这里不是只选取 day 和 microsecond,而是从日期的 day 部分一直选取到 microsecond 部分。够强悍的吧!

    MySQL Extract() 函数唯一不好的地方在于:你需要多敲几次键盘。

    3. MySQL dayof… 函数:dayofweek(), dayofmonth(), dayofyear()

    分别返回日期参数,在一周、一月、一年中的位置。

    set @dt = '2008-08-08';

    select dayofweek(@dt); -- 6
    select dayofmonth(@dt); -- 8
    select dayofyear(@dt); -- 221
    日期 ‘2008-08-08′ 是一周中的第 6 天(1 = Sunday, 2 = Monday, …, 7 = Saturday);一月中的第 8 天;一年中的第 221 天。

    4. 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)。

    MySQLweekday() 函数和 dayofweek() 类似,都是返回“某天”在一周中的位置。不同点在于参考的标准, weekday:(0 =Monday, 1 = Tuesday, …, 6 = Sunday); dayofweek:(1 = Sunday, 2 = Monday,…, 7 = Saturday)

    MySQL yearweek() 函数,返回 year(2008) + week 位置(31)。

    5. MySQL 返回星期和月份名称函数:dayname(), monthname()

    set @dt = '2008-08-08';

    select dayname(@dt); -- Friday
    select monthname(@dt); -- August
    思考,如何返回中文的名称呢?

    6. MySQL last_day() 函数:返回月份中的最后一天。

    select last_day('2008-02-01'); -- 2008-02-29
    select last_day('2008-08-08'); -- 2008-08-31
    MySQL last_day() 函数非常有用,比如我想得到当前月份中有多少天,可以这样来计算:

    mysql> select now(), day(last_day(now())) as days;

    +---------------------+------+
    | now() | days |
    +---------------------+------+
    | 2008-08-09 11:45:45 | 31 |
    +---------------------+------+ 三、MySQL 日期时间计算函数
    1. MySQL 为日期增加一个时间间隔:date_add()

    set @dt = now();

    select date_add(@dt, interval 1 day); -- add 1 day
    select date_add(@dt, interval 1 hour); -- add 1 hour
    select date_add(@dt, interval 1 minute); -- ...
    select date_add(@dt, interval 1 second);
    select date_add(@dt, interval 1 microsecond);
    select date_add(@dt, interval 1 week);
    select date_add(@dt, interval 1 month);
    select date_add(@dt, interval 1 quarter);
    select date_add(@dt, interval 1 year);select date_add(@dt, interval -1 day); -- sub 1 day
    MySQL adddate(), addtime()函数,可以用 date_add() 来替代。下面是 date_add() 实现 addtime() 功能示例:

    mysql> set @dt = '2008-08-09 12:12:33';

    mysql>
    mysql> select date_add(@dt, interval '01:15:30' hour_second);

    +------------------------------------------------+
    | date_add(@dt, interval '01:15:30' hour_second) |
    +------------------------------------------------+
    | 2008-08-09 13:28:03 |
    +------------------------------------------------+mysql> select date_add(@dt, interval '1 01:15:30' day_second);

    +-------------------------------------------------+
    | date_add(@dt, interval '1 01:15:30' day_second) |
    +-------------------------------------------------+
    | 2008-08-10 13:28:03 |
    +-------------------------------------------------+
    date_add() 函数,分别为 @dt 增加了“1小时 15分 30秒” 和 “1天 1小时 15分 30秒”。建议:总是使用 date_add() 日期时间函数来替代 adddate(), addtime()。

    2. MySQL 为日期减去一个时间间隔:date_sub()

    mysql> select date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second);

    +----------------------------------------------------------------+
    | date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second) |
    +----------------------------------------------------------------+
    | 1997-12-30 22:58:59 |
    +----------------------------------------------------------------+
    MySQL date_sub() 日期时间函数 和 date_add() 用法一致,不再赘述。另外,MySQL 中还有两个函数 subdate(), subtime(),建议,用 date_sub() 来替代。

    3. MySQL 另类日期函数:period_add(P,N), period_diff(P1,P2)

    函数参数“P” 的格式为“YYYYMM” 或者 “YYMM”,第二个参数“N” 表示增加或减去 N month(月)。

    MySQL period_add(P,N):日期加/减去N月。

    mysql> select period_add(200808,2), period_add(20080808,-2)

    +----------------------+-------------------------+
    | period_add(200808,2) | period_add(20080808,-2) |
    +----------------------+-------------------------+
    | 200810 | 20080806 |
    +----------------------+-------------------------+
    MySQL period_diff(P1,P2):日期 P1-P2,返回 N 个月。

    mysql> select period_diff(200808, 200801);

    +-----------------------------+
    | period_diff(200808, 200801) |
    +-----------------------------+
    | 7 |
    +-----------------------------+
    在 MySQL 中,这两个日期函数,一般情况下很少用到。

    4. MySQL 日期、时间相减函数:datediff(date1,date2), timediff(time1,time2)

    MySQL datediff(date1,date2):两个日期相减 date1 - date2,返回天数。

    select datediff('2008-08-08', '2008-08-01'); -- 7
    select datediff('2008-08-01', '2008-08-08'); -- -7
    MySQL timediff(time1,time2):两个日期相减 time1 - time2,返回 time 差值。

    select timediff('2008-08-08 08:08:08', '2008-08-08 00:00:00'); -- 08:08:08
    select timediff('08:08:08', '00:00:00'); -- 08:08:08
    注意:timediff(time1,time2) 函数的两个参数类型必须相同。

    四、MySQL 日期转换函数、时间转换函数
    1. MySQL (时间、秒)转换函数:time_to_sec(time), sec_to_time(seconds)

    select time_to_sec('01:00:05'); -- 3605
    select sec_to_time(3605); -- '01:00:05'
    2. MySQL (日期、天数)转换函数:to_days(date), from_days(days)

    select to_days('0000-00-00'); -- 0
    select to_days('2008-08-08'); -- 733627select from_days(0); -- '0000-00-00'
    select from_days(733627); -- '2008-08-08'
    3. MySQL Str to Date (字符串转换为日期)函数:str_to_date(str, format)

    select str_to_date('08/09/2008', '%m/%d/%Y'); -- 2008-08-09
    select str_to_date('08/09/08' , '%m/%d/%y'); -- 2008-08-09
    select str_to_date('08.09.2008', '%m.%d.%Y'); -- 2008-08-09
    select str_to_date('08:09:30', '%h:%i:%s'); -- 08:09:30
    select str_to_date('08.09.2008 08:09:30', '%m.%d.%Y %h:%i:%s'); -- 2008-08-09 08:09:30
    可以看到,str_to_date(str,format) 转换函数,可以把一些杂乱无章的字符串转换为日期格式。另外,它也可以转换为时间。“format” 可以参看 MySQL 手册。

    4. MySQL Date/Time to Str(日期/时间转换为字符串)函数:date_format(date,format), time_format(time,format)

    mysql> select date_format('2008-08-08 22:23:00', '%W %M %Y');

    +------------------------------------------------+
    | date_format('2008-08-08 22:23:00', '%W %M %Y') |
    +------------------------------------------------+
    | Friday August 2008 |
    +------------------------------------------------+mysql> select date_format('2008-08-08 22:23:01', '%Y%m%d%H%i%s');

    +----------------------------------------------------+
    | date_format('2008-08-08 22:23:01', '%Y%m%d%H%i%s') |
    +----------------------------------------------------+
    | 20080808222301 |
    +----------------------------------------------------+mysql> select time_format('22:23:01', '%H.%i.%s');

    +-------------------------------------+
    | time_format('22:23:01', '%H.%i.%s') |
    +-------------------------------------+
    | 22.23.01 |
    +-------------------------------------+
    MySQL 日期、时间转换函数:date_format(date,format), time_format(time,format) 能够把一个日期/时间转换成各种各样的字符串格式。它是 str_to_date(str,format) 函数的 一个逆转换。

    5. MySQL 获得国家地区时间格式函数:get_format()

    MySQL get_format() 语法:

    get_format(date|time|datetime, 'eur'|'usa'|'jis'|'iso'|'internal'
    MySQL get_format() 用法的全部示例:

    select get_format(date,'usa') ; -- '%m.%d.%Y'
    select get_format(date,'jis') ; -- '%Y-%m-%d'
    select get_format(date,'iso') ; -- '%Y-%m-%d'
    select get_format(date,'eur') ; -- '%d.%m.%Y'
    select get_format(date,'internal') ; -- '%Y%m%d'
    select get_format(datetime,'usa') ; -- '%Y-%m-%d %H.%i.%s'
    select get_format(datetime,'jis') ; -- '%Y-%m-%d %H:%i:%s'
    select get_format(datetime,'iso') ; -- '%Y-%m-%d %H:%i:%s'
    select get_format(datetime,'eur') ; -- '%Y-%m-%d %H.%i.%s'
    select get_format(datetime,'internal') ; -- '%Y%m%d%H%i%s'
    select get_format(time,'usa') ; -- '%h:%i:%s %p'
    select get_format(time,'jis') ; -- '%H:%i:%s'
    select get_format(time,'iso') ; -- '%H:%i:%s'
    select get_format(time,'eur') ; -- '%H.%i.%s'
    select get_format(time,'internal') ; -- '%H%i%s'
    MySQL get_format() 函数在实际中用到机会的比较少。

    6. MySQL 拼凑日期、时间函数:makdedate(year,dayofyear), maketime(hour,minute,second)

    select makedate(2001,31); -- '2001-01-31'
    select makedate(2001,32); -- '2001-02-01'select maketime(12,15,30); -- '12:15:30' 五、MySQL 时间戳(Timestamp)函数
    1. MySQL 获得当前时间戳函数:current_timestamp, current_timestamp()

    mysql> select current_timestamp, current_timestamp();

    +---------------------+---------------------+
    | current_timestamp | current_timestamp() |
    +---------------------+---------------------+
    | 2008-08-09 23:22:24 | 2008-08-09 23:22:24 |
    +---------------------+---------------------+
    2. MySQL (Unix 时间戳、日期)转换函数:

    unix_timestamp(),
    unix_timestamp(date),
    from_unixtime(unix_timestamp),
    from_unixtime(unix_timestamp,format)
    下面是示例:

    select unix_timestamp(); -- 1218290027
    select unix_timestamp('2008-08-08'); -- 1218124800
    select unix_timestamp('2008-08-08 12:30:00'); -- 1218169800select from_unixtime(1218290027); -- '2008-08-09 21:53:47'
    select from_unixtime(1218124800); -- '2008-08-08 00:00:00'
    selectfrom_unixtime(1218169800); -- '2008-08-08 12:30:00'selectfrom_unixtime(1218169800, '%Y %D %M %h:%i:%s %x'); -- '2008 8th August12:30:00 2008'
    3. MySQL 时间戳(timestamp)转换、增、减函数:

    timestamp(date) -- date to timestamp
    timestamp(dt,time) -- dt + time
    timestampadd(unit,interval,datetime_expr) --
    timestampdiff(unit,datetime_expr1,datetime_expr2) --
    请看示例部分:

    select timestamp('2008-08-08'); -- 2008-08-08 00:00:00
    select timestamp('2008-08-08 08:00:00', '01:01:01'); -- 2008-08-08 09:01:01
    selecttimestamp('2008-08-08 08:00:00', '10 01:01:01'); -- 2008-08-1809:01:01select timestampadd(day, 1, '2008-08-08 08:00:00'); --2008-08-09 08:00:00
    select date_add('2008-08-08 08:00:00', interval 1 day); -- 2008-08-09 08:00:00
    MySQL timestampadd() 函数类似于 date_add()。

    select timestampdiff(year,'2002-05-01','2001-01-01'); -- -1
    select timestampdiff(day ,'2002-05-01','2001-01-01'); -- -485
    select timestampdiff(hour,'2008-08-08 12:00:00','2008-08-08 00:00:00'); -- -12

    select datediff('2008-08-08 12:00:00', '2008-08-01 00:00:00'); -- 7
    MySQL timestampdiff() 函数就比 datediff() 功能强多了,datediff() 只能计算两个日期(date)之间相差的天数。

    六、MySQL 时区(timezone)转换函数convert_tz(dt,from_tz,to_tz)selectconvert_tz('2008-08-08 12:00:00', '+08:00', '+00:00'); -- 2008-08-0804:00:00
    时区转换也可以通过 date_add, date_sub, timestampadd 来实现。

    select date_add('2008-08-08 12:00:00', interval -8 hour); -- 2008-08-08 04:00:00
    select date_sub('2008-08-08 12:00:00', interval 8 hour); -- 2008-08-08 04:00:00
    select timestampadd(hour, -8, '2008-08-08 12:00:00'); -- 2008-08-08 04:00:00

    转载于:https://www.cnblogs.com/huaku/p/3571148.html

    展开全文
  • 数据库格式化时间 用DATE_FORMA T(date, format) . 根据格式串format 格式化日期日期和时间值date,返回结果串。可用DATE_FORMAT( ) 来格式化DATE 或DATETIME 值,以便得到所希望的格式。根据format字符串...

    取得当前时间用 now() 就行。 在数据库中格式化时间 用DATE_FORMA T(date, format) . 根据格式串format 格式化日期或日期和时间值date,返回结果串。

    可用DATE_FORMAT( ) 来格式化DATE 或DATETIME 值,以便得到所希望的格式。根据format字符串格式化date值:

    %S, %s 两位数字形式的秒( 00,01, . . ., 59)

    %i 两位数字形式的分( 00,01, . . ., 59)

    %H 两位数字形式的小时,24 小时(00,01, . . ., 23)

    %h, %I 两位数字形式的小时,12 小时(01,02, . . ., 12)

    %k 数字形式的小时,24 小时(0,1, . . ., 23)

    %l 数字形式的小时,12 小时(1, 2, . . ., 12)

    %T 24 小时的时间形式(h h : m m : s s)

    %r 12 小时的时间形式(hh:mm:ss AM 或hh:mm:ss PM)

    %p AM 或P M

    %W 一周中每一天的名称( S u n d a y, Monday, . . ., Saturday)

    %a 一周中每一天名称的缩写( Sun, Mon, . . ., Sat)

    %d 两位数字表示月中的天数( 00, 01, . . ., 31)

    %e 数字形式表示月中的天数( 1, 2, . . ., 31)

    %D 英文后缀表示月中的天数( 1st, 2nd, 3rd, . . .)

    %w 以数字形式表示周中的天数( 0 = S u n d a y, 1=Monday, . . ., 6=Saturday)

    %j 以三位数字表示年中的天数( 001, 002, . . ., 366)

    % U 周(0, 1, 52),其中Sunday 为周中的第一天

    %u 周(0, 1, 52),其中Monday 为周中的第一天

    %M 月名(J a n u a r y, February, . . ., December)

    %b 缩写的月名( J a n u a r y, February, . . ., December)

    %m 两位数字表示的月份( 01, 02, . . ., 12)

    %c 数字表示的月份( 1, 2, . . ., 12)

    %Y 四位数字表示的年份

    %y 两位数字表示的年份

    %% 直接值“%”

    select date_format(日期字段,’%Y-%m-%d’) as ‘日期’ from test

    呵呵 基本上就这些了,一会好好表现哟。。。。。。

    展开全文
  • 获取当前日期,及数字显示和转换 日期修改,格式化日期输出 时间段内月份集合 一. 获取当前日期及数字转换 : 使用json传输数据库中Date对象时,传输的一个Long型整数,是1970年1月1日至今的毫秒数。在这里...
  • 转自:... 获取当前系统时间和日期格式化输出:import java.util.Date;import java.text.SimpleDateFormat;public class NowString {public static void main(String[] ...
  • (2)GETDATE 函数 获取系统当前时间 (3)DATENAME 获取时间名称 结果如下: (4)日期加减 DATEADD(增长单位(年、月、日),步长(增长多少),基数),DATEDIFF(增长单位(年、月、日),步长(增长...
  • 插入当前日期到SQLServer 获取当前时间 Timestamp orderDate = new Timestamp(new...格式化并转换为String类型,插入到数据库 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Str...
  • 在程序中我们经常会将某一个时间戳存储到数据库,或者将数据库中的时间戳取出格式化成某种显示格式,或者是计算两个日期之间的相隔天数……下面小编就将最近整理的关于日期格式化小插曲分享给大家;  小编经常用到...
  • 今天写项目的时候用到ant design中的日期组件,但是由于用ant design日期组件取得的值是moment类型,而往数据库中保存需要的是字符串类型....获取当前日期的下一天 window.moment().add(1, ‘days’) 参考地
  • 获取当前时间,并且格式化数据 // 创建 SimpleDateFormat 对象并指定显示格式 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); // 调用 format 方法转换获取的当前时间 String date = formatter....
  • 一般数据库存储的字段都...一、获取当前时间的时间戳(秒为单位) var timestamp = Date.parse(new Date()) / 1000; //当前时间戳为:1562652064 console.log("当前时间戳为:" + timestamp); 二、获取某个时间格...
  • SQL SERVER 2000用sql语句如何获得当前系统时间 就是用GETDATE();...Sql Server 中一个非常强大的日期格式化函数 Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2008 10:57AM Select CONVERT(varcha
  • 2 当前时间获取 DateTime.Now.ToShortDateString 3 取值中格式化 SQL Server里面可能经常会用到的日期格式转换方法: sql server使用convert来取得datetime日期数据,以下实例包含各种日期格式的转换 语句及...
  • 一、描述 1、数据库中有一个date类型的last_login_time字段,即用户每次登录都会更新该字段; ...2、在登录时使用...3、获取系统当前时间,并用DateFormat格式化,比较两个时间是否相等就可以判断该用户今
  • 2、在登录时使用jdbcTemplate的queryForObject方法,取出last_login_time字段的值以Date类型返回,并用DateFormat格式化该时间3、获取系统当前时间,并用DateFormat格式化,比较两个时间是否相等就可以判断该用户...
  • 数据库字段如右图: model中的字段设置为: ...//获取当前日期 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");//格式化 格式必须是yyyy-mm-dd hh:mm:ss String currentdate
  • java中dao层获取MySQL数据库中的时间

    千次阅读 2017-12-09 13:50:00
    所以使用getTimestamp(),获取到的当前时间的时间戳(long类型的date),在将时间戳转换为java.util.date类型,并将此类型保存到实体类中,在调用实体类的这个属性是,通过时间格式化转换为想要的
  • 记一次springboot开发中...java.util.Date 是 java.sql.Date 的父类,常用来表示时间,通常格式化或者得到当前时间都是用java.util.Date 二者可以转换,使用框架的话最好使用java.util.Date,以免出现像这样的格式化
  • * 获取当前时间 和 将正常的日期转为时间格式存入数据库字段 */ @Test public void test1(){ //System.out.println(new Date()); //获取当前时间 //1.将 时间格式化为 想要的类型 //SimpleDateFormat 规定 ...
  • SYSDATE:取得当前日期和时间,类型是DATE.它没有参数.但在分布式SQL语句中使用时,SYSDATE返回本地数据库日期和时间. Oracle中如何获取系统当前时间 ...//时间格式化方法 to_date('2009-12-25 14:23:31(时间...
  • 一、日期时间函数 1、获取子值 ...3、日期格式化date_format(date,format) 4、当前日期current_date() 5、当前时间current_time() 6、当前日期时间now() 7、小应用: ...
  • 之前在项目开发过程当中,需要写一个月历和一个周历,由于当时项目经验太少,保存时间的时候将格式化后的时间保存到数据库,并且还要判断当前一个月内所有天数里发生的事件,还用到了给出指定的日期判断是星期几的...
  • 项目开发中,日期时间的处理是最常用的,比如在数据库中,我们设定...而日期格式化在很多地方都会用到,因此我们将它作为一个工具类来处理,提高代码的重用性。接下来我们就封装当前项目中用到的日期处理。我们首先...
  • 获取当前数据库中存储的时间 比较两个时间点的先后 显示打印时间 时区转换 对应到go,也就是几个基本定义: 时间点与时间段:Time,Duration。好比MVC中的M。 时 区:Location,在时间转换上,好比是MVC中的C...
  • #获取当前时间 now_time = time.localtime(time.time()) now_time = datetime.datetime(now_... #格式化数据库日期 compare_time = time.strptime(str(red_date), "%Y-%m-%d") date1 = datetime.datetime(compar..
  • 一、实体之间的关系 (1)一对一 (2)一对多 ...5.日期格式化 6.日期运算 interval:间隔 三、字符串函数 pad:填充 1.十进制转换 2.拼接函数 3.补位函数 4.截取函数 5.字符串长度 6.去除
  • 国产人大金仓数据库V7存在一些各种各样的问题,新项目决定采用金仓的V8版本,现将一些...日期格式化DATE_FORMAT(NOW(),'%Y-%m-%d') ---> TO_CHAR(NOW(),'YYYY-MM-DD')3.截取年份DATEPART('yyyy',NOW()) --->...
  • 数据库的时间函数

    2012-04-22 07:40:00
    与时间相关的SQL语句/sql获取当前时间/sql时间比较/sql时间格式化 2010年06月21日 星期一 下午 3:54 1. 当前系统日期、时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值 ...
  • MYSQL 获取当前日期日期格式获取系统日期: NOW()格式化日期: DATE_FORMAT(date, format)注: date:时间字段format:日期格式返回系统日期,输出 2009-12-25 14:38:59select now();输出 09-12-25select date_...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 308
精华内容 123
关键字:

数据库获取当前日期格式化