【问题标题】:How to change MySQL date format for database?如何更改数据库的 MySQL 日期格式?
【发布时间】:2021-10-05 05:36:43
【问题描述】:

我们在 FileMaker 中使用 MySQL 数据库。看来 FileMaker 在读取 MySQL 表时,只会接受 m/d/y 格式的日期。

有什么方法可以让我们的 MySQL 数据库将其默认格式更改为 m/d/y 而不是 YYYY-MM-DD?

我知道我可以在单个 SELECT 查询上使用 DATE_FORMAT() 函数,但我想看看我是否可以更改默认格式。

【问题讨论】:

  • FileMaker 需要什么样的访问权限——希望只是只读的?我问的原因是您可以使用视图向 FileMaker 提供数据,这将允许您指定日期格式...

标签: mysql date formatting filemaker


【解决方案1】:

看了一点发现可以change the format for an specific field但是不推荐。

you cannot change the storage format

您可以设置 ALLOW_INVALID_DATES 并以您希望的格式保存日期,但我真的不建议这样做。

如果您的字段未编入索引,则在您进行选择时调用DATE_FORMAT() 没有问题,唯一的问题是如果您需要为该字段进行选择,在这种情况下将不会使用索引,因为您正在调用函数。

【讨论】:

  • 您可以通过将格式输出别名为字段名称以外的其他名称并在 where 子句中使用原始字段名称来解决索引问题。不过,mysql 应该足够聪明,可以自己实现这一点。
  • 是的。我想我指的是使用像SELECT ... FROM table WHERE DATE_FORMAT(myfield, '%d/%m/%y') = '16/12/2010' 这样的 WHERE 进行查询,在这种情况下,将不会使用索引
【解决方案2】:

诀窍不是在 MySQL 中更改格式(它无论如何都不会存储为字符串),而是在查询时指定您想要的格式。

这可以通过以下方式实现:

SELECT date_format(mydatefield,'%m/%d/%Y') as mydatefield FROM mytable

官方 MySQL 手册在这里:http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format

顺便说一句,题外话,但我觉得我应该提一下:我总是建议不要使用 mm/dd/yyyy 作为日期格式——你会混淆美国以外的任何人;世界上几乎所有其他国家通常都会使用 dd/mm/yyyy。但是这两种格式都是模棱两可的——当你说“2010 年 12 月 5 日”时,你的意思是什么日期?可能和我不一样,但实际上不可能知道你的意图。

如果您打算将日期用于显示目的,我总是将月份显示为单词或缩写,因为这样可以消除任何歧义。出于输入目的,请使用日历控件以避免任何可能的混淆。

【讨论】:

    【解决方案3】:

    我认为你不能,请参阅Changing MySQL's Date Format

    有一些名为 date_formatdatetime_format 的系统变量看起来很有希望,但如果你尝试设置它们,你会得到一个错误,documentation 说它们“未使用”。

    【讨论】:

      【解决方案4】:

      我使用 WAMP 安装,通常只需创建一个列 INT(10),然后像这样存储我的日期:

      UPDATE  `test` SET  `dateandtime` = DATE_FORMAT( NOW(),  '%y%m%d%H%i' ) WHERE `id` =1234;
      

      这会将2013-11-22 12:45:09 存储为类似1322111245 的数字。是的,它可能被认为是“不恰当的”,但我不在乎。它工作正常,我可以轻松地在客户端上按我喜欢的方式进行排序和格式化。

      如果您希望运行任何其他日期函数,显然不建议这样做,但对我来说,我通常只想知道记录的最后更新并按日期对结果集进行排序。

      【讨论】:

        【解决方案5】:
        SELECT COUNT(field_name) AS count_it FROM table_name WHERE DATE_FORMAT(date_field,'%Y-%m-%d') = DATE_FORMAT(CURDATE(), '%Y-%m-%d')-- to count records for today.
        

        【讨论】:

          【解决方案6】:
          SELECT DATE_FORMAT(NAME_COLUMN, "%d/%l/%Y %H:%i:%s") AS 'NAME'
          

          【讨论】:

          • 在您的问题中添加一些 cmets 并进行描述。即使它是如此基本;这样对初学者也很有用。
          • 我知道我可以在单个 SELECT 查询上使用 DATE_FORMAT() 函数,但我想看看我是否可以更改默认格式。”OP 在 2010 年说。
          猜你喜欢
          • 2013-12-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多