• mysql时间类型和格式转换


    内容目录

    简介mysql时间类型DATE_FORMAT()函数

    简介

    今天开发中,做一个功能需要对历史数据进行补充,相信大家也遇到过这样的情况,这个历史数据需要按月份和人的id进行区分,于是想到了mysql的时间格式化,这样直接写个sql脚本就不需要程序去执行了,在做到这一块时我个人对时间这一块没有详细了解过,所以借助这个机会整理一下mysql时间相关的内容,其实我这次主要用的是时间格式转换功能,脚本如下

    1INSERT INTO `xxxx`.`xxxxx`(`years_month``receipt_user_id``receipt_freight_charge``receipt_other_charges``receipt_waiting_charge``receipt_insurance_premium``c_u``c_t`
    2SELECT DATE_FORMAT(c_t,'%y%m'), receipt_user_id, IFNULL(SUM(receipt_freight_charge), 0), IFNULL(SUM(receipt_other_charges), 0), 
    3IFNULL(SUM(receipt_waiting_charge), 0), IFNULL(SUM(receipt_insurance_premium), 0), 'system'SYSDATE() FROM t_account_truck_drv WHERE c_t < '2019-11-01 00:00:00' GROUP BY DATE_FORMAT(c_t,'%y%m'), receipt_user_id;

    mysql时间类型

    mysql字段的时间类型分为5种:DATE,DATETIME,TIME,TIMESTAMP,YEAR;
    说实话这五种类型我以前只用datetime,为什么用大家都用这个,所以今天趁这个机会整理学习一下。

    类型字节大小范围格式零值用途
    DATE 3 1000-01-01/9999-12-32 YYYY-MM-DD 0000-00-00 日期值
    DATETIME 8 1000-01-01 00:00:00/9999-12-32 23:59:59 YYYY-MM-DD hh:mm:ss 0000-00-00 00:00:00 混合日期和时间值
    TIME 3 -838:59:59/838:59:59 hh:mm:ss 00:00:00 时间值
    TIMESTAMP 4 1970-01-01 00:00:01/2038-01-19 03:14:07 YYYY:MM:DD: hh:mm:ss 0000-00-00 00:00:00 混合日期和时间值,时间戳
    YEAR 1 1901/2155 YYYY 0000 年份值

    每个时间类型都有一个有效范围和一个零值,当指定的类型的值超过有效范围时,就会使用零值
    上表对各个字段的罗列已经很详细了,根据业务的不同选择合适的字段,只是timestamp还有十几年就到期了,感觉这个不太靠谱了其余的也就没啥了

    DATE_FORMAT()函数

    DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。

    语法

    1DATE_FORMAT(date,format)

    date 参数是合法的日期。format 规定日期/时间的输出格式。
    示例:

    1SELECT DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p'); //Nov 20 2019 03:11 PM
    2SELECT DATE_FORMAT(NOW(),'%m-%d-%Y'); //11-20-2019
    3SELECT DATE_FORMAT(NOW(),'%d %b %y'); //20 Nov 19
    4SELECT DATE_FORMAT(NOW(),'%d %b %Y %T:%f'); //20 Nov 2019 15:11:22:000000

    格式描述:

    格式描述
    %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 位
  • 相关阅读:
    mysqldump
    设计模式
    设计模式
    设计模式
    设计模式
    PHP 调试
    PHP 调试
    Windows 下手工搭建 LNMP 环境
    设计模式
    设计模式
  • 原文地址:https://www.cnblogs.com/chunyun/p/11898014.html
Copyright © 2020-2023  润新知