【问题标题】:How to insert date type value with slashes instead of dashes in mysql?如何在mysql中用斜杠而不是破折号插入日期类型值?
【发布时间】:2019-05-08 10:27:09
【问题描述】:

我一直在尝试将值插入带有斜杠的日期类型列,但 keep 给我 null(成功时)或失败。

CREATE TABLE if not exists EMPLOYEE (
   id primary key,
   dob Date
)

上面是表格的结构

INSERT INTO EMPLOYEE VALUES (1, convert(date, "17/12/2015", 103));
INSERT INTO EMPLOYEE VALUES (1, CAST("15/2/1995" AS DATE));

这两行代码是我尝试过的。 通过使用第一行,它会引发错误。 第二行成功创建了一条记录,但最终在 dob 列中有 NULL。

为了便于阅读,我实际上已经缩短了它们,但如果您需要其他任何东西,我很乐意提供。

【问题讨论】:

  • 这看起来非常类似于 SQL Server,而不是 MySQL,代码。您在这里实际使用的是哪个数据库?

标签: mysql sql database date


【解决方案1】:

首先,您应该只使用标准格式的日期:

INSERT INTO EMPLOYEE (id, dob)
    VALUES (1, '2015-12-17');

如果您想在 MySQL 中使用不同的格式,请使用 str_to_date():

INSERT INTO EMPLOYEE (id, dob)
    VALUES (1, STR_TO_DATE('17/12/2015', '%d/%m/%Y'));

您尝试使用的CONVERT() 函数是SQL Server 扩展。它在其他数据库中不起作用(嗯,除了 Sybase,因为它实际上是 Sybase 扩展,而 SQL Server 是基于该代码库的)。

【讨论】:

  • 你怎么知道 OP 实际上正在使用 MySQL :-)?
  • 感谢您的意见,但由于某些原因,当我使用 STR_TO_DATE 函数时,我最终得到的值是 2015-12-17 而不是 17/12/2015。
  • @William:这只是同一事物的另一种表现形式。您可以使用date_format() 以某种格式显示日期,例如date_format(dob, '%d/%m/%Y'),如果您受非标准表示的约束。
猜你喜欢
  • 2012-01-30
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多