【问题标题】:Sql I have a string I want to store as a datetimeSql 我有一个字符串我想存储为日期时间
【发布时间】:2015-06-16 15:20:18
【问题描述】:

我有字符串,它们存储为 varchar(50),但我想将它们作为日期时间存储在不同的表/列中。任何人都知道如何轻松转换它们?

2015-05-31 19:01:00-06:00
2015-05-31 19:02:00-06:00
2015-05-31 19:03:00-06:00
2015-05-31 19:04:00-06:00
2015-05-31 19:05:00-06:00
2015-05-31 19:06:00-06:00
2015-05-31 19:07:00-06:00
2015-05-31 19:08:00-06:00
2015-05-31 19:09:00-06:00
2015-05-31 19:10:00-06:00

我尝试了以下 .... timeStr 是一个 varchar(50) 而 date_time 是一个日期时间。这是在 MSSql 中

插入 temp (timeStr, date_time) 值 ('2015-05-31 19:01:00-06:00','2015-05-31 19:01:00-06:00');

插入 temp (timeStr, date_time) 值 ('2015-05-31 19:01:00-06:00',convert(datetime,'2015-05-31 19:01:00- 06:00'));

插入 temp (timeStr, date_time) 值 ('2015-05-31 19:01:00-06:00',cast('2015-05-31 19:01:00-06:00' as datetime));

【问题讨论】:

  • 这里的-06:00 是什么意思?
  • 你能谈谈你的努力吗?你的 DBMS 是什么。在 MySQL 中有一个简单的way
  • 如果您将列类型更改为日期时间,它应该可以工作。无需转换
  • 我尝试了以下 .... timeStr 是一个 varchar(50) 并且 date_time 是一个日期时间。这是在 MSSql 中插入 temp (timeStr, date_time) 值('2015-05-31 19:01:00-06:00','2015-05-31 19:01:00-06:00');插入 temp (timeStr, date_time) 值 ('2015-05-31 19:01:00-06:00',convert(datetime,'2015-05-31 19:01:00-06:00') );插入 temp (timeStr, date_time) 值('2015-05-31 19:01:00-06:00',cast('2015-05-31 19:01:00-06:00' as datetime) );

标签: sql string datetime


【解决方案1】:

这是非常有据可查的,请参阅此处:CAST and CONVERT

【讨论】:

    【解决方案2】:

    我最终使用 PHP 将字符串解析为纪元时间并将其存储为 int。

    【讨论】:

      【解决方案3】:

      MySQL 中有一个使用STR_TO_DATE 函数的简单解决方案,它可以将格式化字符串和带有format 的字符串作为参数传递。对于您的示例,为了摆脱日期后的尾随字符,我也使用了 LEFT 函数。

      假设你的表名是foo,varchar(50)字段的名字是CHDT是名字日期时间(我对今天的名字缺乏幻想......),查询是:

      UPDATE foo SET DT=STR_TO_DATE(LEFT(CH,19),'%Y-%m-%d %H:%i:%s');
      

      【讨论】:

        猜你喜欢
        • 2016-06-05
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        • 2019-04-12
        • 2016-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多