【问题标题】:UNIX_TIMESTAMP outputting NULL in MySQL?UNIX_TIMESTAMP 在 MySQL 中输出 NULL?
【发布时间】:2013-11-23 08:42:01
【问题描述】:

我有一个已填充数据的表格设置。在“日期”列中,我的日期格式如下:

yyyymmdd 即 20131110

我创建了一个新字段并使用文本格式将其命名为 newdate。

然后,我打开 SQL 窗口并将以下内容放入

UPDATE wl_daily
SET
   newdate = UNIX_TIMESTAMP(date)

由于某种原因,它运行正常,但是它只向所有行输出 NULL。另外,由于某种原因,列名是空白的

有什么建议吗?

【问题讨论】:

    标签: mysql sql date datetime timestamp


    【解决方案1】:

    虽然 John Cronde 的回答是正确的 - 它对您的情况没有帮助

     UNIX_TIMESTAMP(STR_TO_DATE(`date`, '%Y%m%d'))
    

    例如将进行转换

    SELECT UNIX_TIMESTAMP(STR_TO_DATE('20131111', '%Y%m%d')) 
    

    返回

    unix_timestamp(STR_TO_DATE('20131111', '%Y%m%d'))  
    ---------------------------------------------------
                                             1384128000   
    

    您应该只使用它来将您的列转换为特定日期的列。如果在生产中使用,每次需要一个数字时转换都会增加负载并减慢查询速度

    【讨论】:

    • 我尝试了以下方法:UPDATE wl_daily SET newdate = UNIX_TIMESTAMP (STR_TO_DATE(date, '%Y%m%d')) 但是再次返回 NULL
    • 什么是date 应该是包含文本的列?用反引号引用它,因为日期是保留字
    • date 是现有信息,即 20131110 和 newdate 将是日期的时间戳版本。我刚刚添加了反引号,但仍然有同样的问题。
    • 你能设置一个jsfiddle或者试试上面的select语句吗?
    • 关于返回1384128000的select语句
    【解决方案2】:

    那是因为你的字段是一个字符串,而你正试图向它添加时间戳,而 不是 一个字符串。您需要使用 valid datetime field 之类的 timestamp 才能使其正常工作。

    建议:不要将日期和时间存储为字符串。将它们存储在他们的native format 中。它使处理日期和时间更加更容易。

    【讨论】:

    • 所以我已将日期字段设置为“日期”,但我似乎仍然在 newdate 字段中获得 NULL。关于这两个字段应该是什么的任何建议?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-15
    • 2010-10-21
    • 2011-08-17
    相关资源
    最近更新 更多