数据库中怎么存储unix时间戳_mysql 怎么将数据库unix时间戳实际时间 - CSDN
  • 最近在一家公司实习所做的项目后台...unix时间戳是从1970年1月1日0时0分0秒开始计算秒数的一个数值,在最近几年里,在数据库中存放的应该都是以1开头的一串11位数字,所以,刚好在mysql以int(11)型存储。为什么要用u

    最近在一家公司实习所做的项目后台是用php写的,同事喜欢用unix时间戳来存储时间,刚开始觉得很不直观,倒不如直接用date来存储,直观又简洁。但是有经验的人做出的决定肯定是有原因的。

    什么是unix时间戳?

    unix时间戳是从1970年1月1日0时0分0秒开始计算秒数的一个数值,在最近几年里,在数据库中存放的应该都是以1开头的一串11位数字,所以,刚好在mysql中以int(11)型存储。

    为什么要用unix时间戳?

    在现在的系统中经常遇到跨数据库的应用开发,在数据库系统中不同的数据库对与时间类型却有不同解释,比如ORACLE的date和MYSQL里面的date就不能直接兼容转换,数据方面还可以使用数据迁移工具进行转换,但是对与应用来说那就是灾难。
    为了实现垮平台在应用系统中记录时间的时候我们就可以使用记录UNIX时间戳的方法做到垮平台性。现在大多数的语言java、PHP、Perl等都支持直接取UNIX时间戳,将需要记录的时间记录为UNIX时间戳,这样就可以不同的数据库系统中的垮平台性,对与时间的操作只要对时间戳操作就行了。

    在mysql中将查询结果为unix时间戳转换为date格式

    select from_unixtime(c_order_time)order_time,from_unixtime(c_over_time)over_time from t_student
    查询结果如下:
    这里写图片描述

    关于from_unixtime

    FROM_UNIXTIME(unix_timestamp), FROM_UNIXTIME(unix_timestamp,format)是MySQL里的时间函数
    ,unix_timestamp可以是字段名,也可以直接是Unix 时间戳,format主要是将返回值格式化。
    若format已经给出,则结果的格式是根据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), 这里星期一是星期的第一天
    %% 一个文字“%”。

    那将日期转换为unix时间戳呢?当然也有对应的函数叫UNIX_TIMESTAMP

    unix_timestamp()函数的作用是返回一个确切的时间点的UNIX时间戳,这个Unix时间戳是一个无符号整数。unix_timestamp()函数有两种重载形式,一是不带任何参数,另外一个是带有一个Date或DateTime或TimeStamp类型的参数。
    unix_timestamp(),返回自1970-1-1 8:00:00开始到当前系统时间为止的秒数。
    unix_timestamp(date),返回1970-1-1 8:00:00开始到date所代表的时间为止的秒数,对于早于1970-1-1 8:00:00的时间,总是返回 0 。

    展开全文
  • Unix时间戳转化时间

    2019-02-18 11:07:13
    因为项目经常用到Unix时间戳的转化,今天就总结一下 PHP 这种方式在PHP程序完成转换,优点是无论是不是数据库中查询获得的数据都能转换,转换范围不受限制,缺点是占用PHP解析器的解析时间,速度相对慢。 用...

    因为项目中经常用到Unix时间戳的转化,今天就总结一下

    PHP中
    这种方式在PHP程序中完成转换,优点是无论是不是数据库中查询获得的数据都能转换,转换范围不受限制,缺点是占用PHP解析器的解析时间,速度相对慢。
    用函数:
    date() 一般形式:date(‘Y-m-d H:i:s’, unix时间)
    PHP中将正常时间戳转化为Unix时间戳
    用函数:echo strtotime(“now”), “\n”;
    echo strtotime(“10 September 2000”), “\n”;
    echo strtotime("+1 day"), “\n”;
    echo strtotime("+1 week"), “\n”;
    echo strtotime("+1 week 2 days 4 hours 2 seconds"), “\n”;
    echo strtotime(“next Thursday”), “\n”;
    echo strtotime(“last Monday”), “\n”;

    MySQL中
    这种方式在MySQL查询语句中转换,优点是不占用PHP解析器的解析时间,速度快,缺点是只能用在数据库查询中,有局限性。

    1. UNIX时间戳转换为日期用函数: FROM_UNIXTIME()
      一般形式:select FROM_UNIXTIME(1156219870);
    2. 日期转换为UNIX时间戳用函数: UNIX_TIMESTAMP()
      一般形式:Select UNIX_TIMESTAMP(‘2006-11-04 12:23:00′);
      举例:mysql查询当天的记录数:
      $sql=”select * from message Where DATE_FORMAT(FROM_UNIXTIME(chattime),’%Y-%m-%d’) = DATE_FORMAT(NOW(),’%Y-%m-%d’) order by id desc”;

    JS中
    UNIX时间戳转换为日期用函数
    new Date(Unix时间戳*1000)
    在这里插入图片描述
    但是格式并不尽如人意,自定义format函数对其进行格式转化
    // 对Date的扩展,将 Date 转化为指定格式的String
    // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
    // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
    Date.prototype.Format = function(fmt)
    { //author: meizz
    var o = {
    “M+” : this.getMonth()+1, //月份
    “d+” : this.getDate(), //日
    “h+” : this.getHours(), //小时
    “m+” : this.getMinutes(), //分
    “s+” : this.getSeconds(), //秒
    “q+” : Math.floor((this.getMonth()+3)/3), //季度
    “S” : this.getMilliseconds() //毫秒
    };
    if(/(y+)/.test(fmt))
    fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
    for(var k in o)
    if(new RegExp("("+ k +")").test(fmt))
    fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : ((“00”+ o[k]).substr((""+ o[k]).length)));
    return fmt;
    }

    new Date(Unix时间戳*1000).Format(“yyyy-MM-dd hh:mm:ss”);
    在这里插入图片描述

    展开全文
  • 在PHP+MySQL编程,UNIX时间戳和格式化日期是我们常打交道的两个时间表示形式,Unix时间戳存储、处理方便,但是不直观,格式化日期直观,但是处理起来不如Unix时间戳那么自如,所以有的时候需要互相转换,下面给出...
    在PHP+MySQL编程中,UNIX时间戳和格式化日期是我们常打交道的两个时间表示形式,Unix时间戳存储、处理方便,但是不直观,格式化日期直观,但是处理起来不如Unix时间戳那么自如,所以有的时候需要互相转换,下面给出互相转换的几种转换方式。 

    一、在MySQL中完成

      这种方式在MySQL查询语句中转换,优点是不占用PHP解析器的解析时间,速度快,缺点是只能用在数据库查询中,有局限性。

    1. UNIX时间戳转换为日期用函数: FROM_UNIXTIME()

    一般形式:
    select FROM_UNIXTIME(1156219870);



    2. 日期转换为UNIX时间戳用函数: UNIX_TIMESTAMP()

    一般形式:

    Select UNIX_TIMESTAMP(’2006-11-04 12:23:00′);


    举例:mysql查询当天的记录数:

    $sql=”select * from message Where DATE_FORMAT(FROM_UNIXTIME(chattime),’%Y-%m-%d’) = DATE_FORMAT(NOW(),’%Y-%m-%d’) order by id desc”;


    当然大家也可以选择在PHP中进行转换,下面说说在PHP中转换。

    二、在PHP中完成

      这种方式在PHP程序中完成转换,优点是无论是不是数据库中查询获得的数据都能转换,转换范围不受限制,缺点是占用PHP解析器的解析时间,速度相对慢。

    1. UNIX时间戳转换为日期用函数: date()

    一般形式:
    date('Y-m-d H:i:s', 1156219870);


    2. 日期转换为UNIX时间戳用函数:strtotime()

    一般形式:
    strtotime('2010-03-24 08:15:42');


    这就是两个普通的PHP时间处理函数,太简单了,我就不举例子了,要获得更多信息请去看《PHP手册》吧。
    展开全文
  • 日期时间与unix时间戳互转
    1、时间---->时间戳
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    System.out.println("时间戳:"+String.valueOf(sdf.parse("2017-05-18 08:52:55").getTime() / 1000));
    
    
    2、时间戳---->时间
    Long timestamp = Long.parseLong("1495068775") * 1000;
    System.out.println("时间:"+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(timestamp)));
    
    
    
    
    
    
    控制台输出:
    
    
    
    
    
    
    展开全文
  • 什么是时间戳? Unix时间戳(Unix timestamp),或称Unix时间(Unix ...Unix时间戳不仅被使用在Unix系统、类Unix系统,也在许多其他操作系统被广泛采用。多数Unix系统将时间戳以一个32位整型进行保存,这可能会在20
  • 时间戳数据库是一个重要的维度,如何决定时间戳是什么类型呢? | | 优势 | 劣势 | | | 1. 存储空间少 2. 方便计算 3. 处理效率高 | 1. 数据不直观 2. 显示时需要做转换 | | 文本类型(各种Format)| 1. 数据直观...
  • oracle日期类型与unix 时间戳的转换, Unix时间戳记是从'1970-01-01 00:00:00'GMT...--unix时间戳与date时间互转 SELECT oracle_to_unix(SYSDATE),unix_to_oracle(1551774286),oracle_to_unix(SYSDATE) FROM dual;
  • UNIX时间戳转换为日期用函数: FROM_UNIXTIME() select FROM_UNIXTIME(1156219870); 日期转换为UNIX时间戳用函数: UNIX_TIMESTAMP() Select UNIX_TIMESTAMP(’2006-11-04 ...
  • UNIX时间戳换算问题

    2014-02-20 09:35:42
    公司项目需要查询远在美国的数据库,而那边存放的数据库的时间是以当地的时间戳来存放的,当查询数据的时候就出现了问题,若用日期like查询和用UNIX时间戳查询出来的是不一样的结果,怎样处理这样的时间差值呢?...
  • Java将Unix时间戳转换成指定格式日期 ...接上一篇文章,从Zabbix数据库里获取数据后,里面的时间数据是Unix时间戳格式, 类似于:1473048265 现在需要把Unix时间戳转化为我们习惯的时间格式。 ...
  • 了解什么是unix时间戳

    2020-05-01 10:37:43
    公司开发的软件是基于B/S架构的,测试组自己在架设虚拟机的时候,经常是通过克隆、或者自行安装,由于个人习惯不同,可能会导致系统的UNIX时间戳彼此不一致,导致虚拟机1安装了WEB 服务器,却发现自己测试用的机器...
  • 转载自:... UNIX时间戳Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp) 是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
  • 常用 1.将Unix时间戳转换成类似... //$time的值即Unix时间戳,可能是你从数据库里取出来的或者... 2.将"2012-05-12"格式的时间转换成时间戳: strtotime("2012-05-12"); //返回值为int型 3.打印当前时间的时间戳:
  • UNIX时间戳的应用

    2015-08-10 15:13:02
     System.currentTimeMillis() :返回当前系统的毫秒数,由于取得的是毫秒数,所以在处理UNIX时间戳的时候需要转换成秒  也就是:  long epoch = System.currentTimeMillis()/1000; 方法:  1、获取当前系统的...
  • 1.字符日期格式转化为UNIX时间戳格式 字段endtime为内容为UNIX时间戳格式,例如1346650755 select * from test where endtime >= extract(epoch FROM date('2012-09-03 00:00:00')); 2.UNIX时间戳转化为字符日期...
  • Unix时间戳转php日期

    2018-04-04 22:08:15
    Unix时间戳存储、处理方便,但是不直观,格式化日期直观,但是处理起来不如Unix时间戳那么自如,所以有的时候需要互相转换,下面给出PHP日期转时间戳、MySQL日期转换函数互相转换的几种转换方式在MySQL完成这种...
  • 在开发过程“时间”是一个不可避免的大问题, 在用SQL语句比较日期时问题尤其突出, int类型太短,到底应该用什么字段存才好呢? MySQL数据库:个人推荐用“bigint”,在Java就是“long”长整型,没错它们是...
  • select to_date('1970101','yyyymmdd')+(1494328141/86400)+to_number(substr(tz_offset(sessiontimezone),1,3))/24 ztime from dual;
1 2 3 4 5 ... 20
收藏数 25,308
精华内容 10,123
关键字:

数据库中怎么存储unix时间戳