V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
anzu
V2EX  ›  MySQL

为什么保存时间戳报错?

  •  
  •   anzu · 2020-02-15 12:10:32 +08:00 · 3374 次点击
    这是一个创建于 1751 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为要保存爬虫抓取到的时间戳数据,所以不能用 now(),想直接保存整型,但是报错,我记得好像可以直接保存整型的

    CREATE TABLE `NewTable` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `ts` timestamp NOT NULL DEFAULT current_timestamp(),
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
    
    insert into NewTable(ts) values (1581735917)
    
    SQL Error [1292] [22007]: (conn:26) Incorrect datetime value: '1581735917' for column `NewTable`.`ts` at row 1
    

    数据库是 mariadb

    第 1 条附言  ·  2020-02-15 17:58:54 +08:00

    搞清楚了。插入的时候需要用from_unixtime转换

    insert into NewTable(ts) values (FROM_UNIXTIME(1581735917))
    

    如果需要保存毫秒数,timestamp字段要指定长度3,比如 timestamp(3),插入时可存浮点数

    insert into NewTable(ts) values (FROM_UNIXTIME(1581735917.309))
    
    8 条回复    2020-02-15 16:21:13 +08:00
    chenset
        1
    chenset  
       2020-02-15 12:39:26 +08:00
    1581735917 你写的是 int 类型, 跟数据库的 timestamp 不是同一种类型
    chenset
        2
    chenset  
       2020-02-15 12:42:21 +08:00
    insert into NewTable(ts) values ('2020-02-15 04:41:22'); 应该这样才行. 未测试~
    chenset
        3
    chenset  
       2020-02-15 12:43:57 +08:00
    保存 int 型时间戳一般都是这样吧: `ts` int NOT NULL DEFAULT 0
    jugelizi
        4
    jugelizi  
       2020-02-15 12:54:15 +08:00
    Incorrect datetime value: '117' for
    很清楚啊 datatime 类型 你存时间戳了
    turan12
        5
    turan12  
       2020-02-15 13:32:57 +08:00
    此时间戳非彼时间戳😊
    mxalbert1996
        6
    mxalbert1996  
       2020-02-15 14:57:36 +08:00 via Android
    @chenset datetime 和 timestamp 也不是同一种类型
    leonard916
        7
    leonard916  
       2020-02-15 15:18:32 +08:00
    我覺得 datetime 比較舒服,另外插入時間要用函數 不能直接插一個數字或者字符串進去
    jason19659
        8
    jason19659  
       2020-02-15 16:21:13 +08:00
    你这个 1581735917 至少也要乘以 1000 吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2638 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 09:53 · PVG 17:53 · LAX 01:53 · JFK 04:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.