【问题标题】:MySQL Alter Table using existing field valuesMySQL Alter Table 使用现有字段值
【发布时间】:2010-10-20 07:24:33
【问题描述】:

我正在使用一个数据库,该数据库有一个名为 date 的表,其中包含一个单独的字段,用于表示日、月、年。显然,当我尝试运行比较等时,这并不理想。我想知道我是否可以在该表的每一行中添加一个 DateTime 字段,并将一个连接字符串从现有的日期、月份插入到新字段中,年份字段。

我很确定这是可能的,我只是想知道是否有人能指出我如何实现这一目标的正确方向?

下面是当前日期表:(我知道)

CREATE TABLE IF NOT EXISTS `date` (
  `deposition_id` varchar(11) NOT NULL default '',
  `day` int(2) default NULL,
  `month` int(2) default NULL,
  `year` int(4) default NULL,
  PRIMARY KEY  (`deposition_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

【问题讨论】:

    标签: php mysql database database-design


    【解决方案1】:

    首先使用alter table查询:

    alter table date 添加列 datetimefield datetime NOT Null

    然后

    在日期上使用带有自连接的更新查询,并在日期、月份、年份列值上使用 concat 更新日期时间字段。

    【讨论】:

    • 您应该添加默认值或不使用NOT NULL
    • 没关系。因为我们将在日期、月份、年份使用 concat 更新它
    【解决方案2】:

    试试这个(未经测试) -

    UPDATE date d SET d.datetime = (SELECT CONCAT('-','year','month','day') from date d1 where d1.id = d.id);
    

    【讨论】:

      【解决方案3】:

      什么问题,我不明白?更改表,添加新的 DATE 列,然后使用 CONCAT mysql 函数或其他方法用字符串“yyyy-mm-dd”填充它。

      【讨论】:

      • 问题是我不知道该怎么做。这就是我问的原因。
      • 具体做什么?如何发出 ALTER TABLE?使用 CONCAT 函数?去阅读一些 MySQL 手册。严重地。为什么不?或者至少在 google 上搜索 alter table + concat mysql 查询示例。去买一本关于 MySQL 的好书吧。
      猜你喜欢
      • 1970-01-01
      • 2020-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多