我们正在使用带有FileMaker的MySQL数据库。看来,当FileMaker读取MySQL表时,它只接受格式为m / d / y的日期。
有什么方法可以让MySQL数据库将默认格式改为m / d / y而不是YYYY-MM-DD?
我知道我可以在单个SELECT查询中使用DATE_FORMAT()函数,但我想知道是否可以更改默认格式。
答案 0 :(得分:10)
再多读一遍,我发现你可以change the format for an specific field,但不推荐。
you cannot change the storage format
您可以设置ALLOW_INVALID_DATES并使用您希望的格式保存日期,但我真的不建议这样做。
如果您的字段未编入索引,那么在您执行选择时调用DATE_FORMAT()
时没有问题,唯一的问题是如果您需要为该字段进行选择,在这种情况下索引将不会被使用因为你正在调用这个函数。
答案 1 :(得分:5)
诀窍不是改变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。但这两种格式都含糊不清 - 当你说“12/05/2010”时,你的日期是什么意思?可能与我不同,但实际上不可能知道你想要的方向。
如果您打算将日期用于显示目的,我总是将月份显示为单词或缩写,因为这样可以消除任何歧义。出于输入目的,请使用日历控件以避免任何可能的混淆。
答案 2 :(得分:1)
我认为你不能,见Changing MySQL's Date Format。
有一些名为date_format
和datetime_format
的系统变量看起来很有希望,但是如果你试图设置它们,你就会收到错误,documentation说它们“未使用” ”。
答案 3 :(得分:0)
我使用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
之类的数字。是的,它可能被认为是“不合适的”,但我不在乎。它可以工作,我可以轻松地在客户端上进行排序和格式化。
如果您希望运行任何其他日期函数,这显然不会被建议,但对我来说,我通常只想知道记录的最后更新并按日期对结果集进行排序。
答案 4 :(得分:0)
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.
答案 5 :(得分:0)
SELECT DATE_FORMAT(NAME_COLUMN, "%d/%l/%Y %H:%i:%s") AS 'NAME'