【问题标题】:Date insert into mysql table将日期插入mysql表
【发布时间】:2010-12-02 22:11:18
【问题描述】:

我的 sql 插入是 date(%d-%M-%y),但这对字段的影响为零,没有添加数据。也没有插入02-Dec-2010。我必须将表格字段类型或默认更改为什么,以便插入的日期为 2010 年 12 月 2 日格式?

Field: creationdate
Type: timestamp 
Default: CURRENT_TIMESTAMP (showing 0000-00-00 00:00:00)

【问题讨论】:

    标签: mysql datetime date timestamp


    【解决方案1】:

    您无需预先设置日期格式。您插入格式为 YYYY-MM-DD HH:II:SS 的时间戳,当您需要格式化日期(SELECT 语句)时,使用DATE_FORMAT 函数。

    如果您已经有了 2010 年 12 月 2 日这样的时间戳,您可以使用 STR_TO_DATE 函数将其转换为真正的时间戳。

    mysql> SELECT DATE_FORMAT(current_date, '%d-%b-%Y');
    +--------------------------------+
    | DATE_FORMAT(NOW(), '%d-%b-%Y') |
    +--------------------------------+
    | 02-Dec-2010                    |
    +--------------------------------+
    
    mysql> SELECT STR_TO_DATE('02-Dec-2010', '%d-%b-%Y');
    +----------------------------------------+
    | STR_TO_DATE('02-Dec-2010', '%d-%b-%Y') |
    +----------------------------------------+
    | 2010-12-02                             |
    +----------------------------------------+
    

    【讨论】:

    • 所以为了避免这种情况,我应该将日期字段设置为常规的 varchar 字段,并将我的 sql 插入日期(%d-%M-%y)。然后我可以选择我想要的现有格式的日期对吗?
    • @acctman :不,你不应该。以 YYYY-MM-DD 格式存储您的日期。当您选择日期时,您可以使用 DATE_FORMAT 函数。
    • 那么我应该将我当前的字段保留在时间戳中并使用默认的 current_timestamp 吗?如果是这样,我的 mysql 查询插入应该如何寻找添加日期?我用插入尝试了 date(%d-%M-%y) ,但表中没有保存任何内容。
    【解决方案2】:

    MySQL 期望日期/日期时间数据类型包含日期和/或时间戳,其日期格式为 YYYY-MM-DD,其中 - 是任何有效的分隔符。 2010 年 12 月 2 日不是这些类型的有效日期。

    【讨论】:

    • 电子表格数据的日期格式为 2010 年 12 月 1 日,因此我必须使用 varchar 字段类型或弄清楚如何使用 date_format 插入该字段
    • INSERT INTO (date, something) VALUES (STR_TO_DATE('01-Dec-2010', '%d-%b-%Y'), something );
    猜你喜欢
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 2014-03-19
    • 2013-11-23
    • 2016-05-24
    • 1970-01-01
    • 2012-11-14
    相关资源
    最近更新 更多