安静
PHP技术博客

130218 mysql datetime 默认时间是不支持now 可以添加触发器来使用

从我接触mysql开始 就一直在关于时间日期上 喜欢用 timestamp 这样的话 默认个 now 就可以了 不需要自己去每次插入的时候 php 进行当前时间查询

公司某项目不知道为什么会选择 innodb 这种2得不能再2的数据库 做 一个普通的社交 网站的数据库原型。

在使用过程中发现 所有的发布时间都为空,查了半天是源自于 dateitime 是设置为空 并且就算你写上now 也是不支持的。

关于 datetime , timestamp 的区别

相同

显示

TIMESTAMP列的显示格式与DATETIME列相同。换句话说,显示宽度固定在19字符,并且格式为YYYY-MM-DD HH:MM:SS。

不同

范围

datetime 以’YYYY-MM-DD HH:MM:SS’格式检索和显示DATETIME值。支持的范围为’1000-01-01 00:00:00’到’9999-12-31 23:59:59’TIMESTAMP值不能早于1970或晚于2037

储存

TIMESTAMP

1.4个字节储存(Time stamp value is stored in 4 bytes)

2.值以UTC格式保存( it stores the number of milliseconds)

3.时区转化 ,存储时对当前的时区进行转换,检索时再转换回当前的时区。

datetime

1.8个字节储存(8 bytes storage)

2.实际格式储存(Just stores what you have stored and retrieves the same thing which you have stored.)

3.与时区无关(It has nothing to deal with the TIMEZONE and Conversion.)

如何解决 datetime 默认时间设置为now ? 下面提供一个简单的触发器函数


delimiter //
DROP TRIGGER IF EXISTS default_datetime//
create trigger default_datetime before insert on shai_item
     for each row
     if new.create_time = '0000-00-00 00:00:00' then
       set new.create_time = now();
     end if;//
delimiter ;

赞(0) 打赏
未经允许不得转载:AJ's Blog » 130218 mysql datetime 默认时间是不支持now 可以添加触发器来使用
分享到: 更多 (0)

评论 7

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #-49

    有点不明白,为什么说 innodb 数据库类型是 2呢?
    MYSQL现在版本创建数据库默认就是innodb ❓

    罗迦费升格7年前 (2013-02-27)
  2. #-48

    innodb 很二?这个不敢苟同~ 支持事务 热备什么~ 就是count的优化~
    时间我只用 int (最长11位) 写入 unix时间戳(int 10位).

    wwek7年前 (2013-03-18)
  3. 怎么说呢 实际上我一直在应用中尚未有关系 到 innodb的使用
    公司跨时代的使用了 innodb 导致了一系列问题 事务 热备 我之前是使用postgresql orcale 这类数据库的 我并没有什么意见 但是我个人认为 在非 金融业务核心的情况下 使用innodb 都是一种奢侈 或者我这么说吧
    在与金融相关的时候 我会选择 postgresql ocale 而不会选择mysql
    在普通业务的时候 我觉得 直接mysql myisam 足够了

    其次 我们也遇到了 问题 我不清楚是否是在 innodb 的情况下 热备了一份 导入 导致了数据丢失【数据出现了不完整性 给我感觉可能是类似orcale恢复数据库的时候 会把所有执行过的原生sql语句恢复执行 那种感觉】 这让我觉得使用感觉很糟糕

    张 清月7年前 (2013-03-18)
  4. 其次我不是dba 只是就个人感言而已,innodb 是个不错的数据库 我不否认:)

    张 清月7年前 (2013-03-18)
  5. #-47

    这个的确是这样的,一般情况用myisam确实是足够了~
    既然选innodb ,那么想必是有懂这个引擎的人了,不懂的情况下不能贸然用.
    postgresql 缺少生产经

    wwek7年前 (2013-03-18)
  6. postgresql 在日韩是主导数据库, 在国内某些行业也是顶尖优选数据库

    张 清月7年前 (2013-03-19)
  7. #-46

    卅行业?

    wwek7年前 (2013-03-19)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏