【问题标题】:Storing specific datetime format in database在数据库中存储特定的日期时间格式
【发布时间】:2013-03-19 16:44:47
【问题描述】:

这是 SOLR 要求的日期时间格式:

1995-12-31T23:59:59Z

当我尝试将其存储为 MySQL 中的日期时间字段时,它说它无效。我的问题是,理想情况下,我想在我的数据库中保留一个日期时间,这样我就可以按日期排序,而不仅仅是将其设为 varchar。在我的情况下如何最好地做到这一点?

【问题讨论】:

  • 我亲爱的伙伴,使用 solr 作为存储,然后为搜索和排序提供动力!而不是使用mysql
  • 感谢您的回复,但出于管理面板和其他各种原因,我仍然希望能够按日期本身对 mysql db 进行排序。我真的不想将我的日期保存为 varchar
  • 在 varchar 中,结果仍然是可排序的 :)
  • @ajreal 这是一个有效的 varchar 1995-13-32T83:49:59Z
  • This 应该会有所帮助。您所看到的只是内部日期时间存储的表示 - 您可以选择如何表示它。

标签: mysql sql database datetime solr


【解决方案1】:

它需要看起来像 '1995-12-31 23:59:59' 才能作为 DATETIME 字段存储在数据库中而不会引发错误。

如果您需要以您提供的形式将其从数据库中提取出来,您可以随时执行以下操作:

select DATE_FORMAT(timestamp_field,'%Y-%m-%dT%TZ') as solrDate from table;

【讨论】:

  • 这看起来是个不错的解决方案。你认为这可以作为一个函数来代替吗?
【解决方案2】:

您可以使用 DATETIME 数据类型。 DATETIME 类型用于同时包含日期和时间部分的值。 MySQL 以 'YYYY-MM-DD HH:MM:SS' 格式检索和显示 DATETIME 值。支持的范围是“1000-01-01 00:00:00”到“9999-12-31 23:59:59”。

见这篇文章:DATE, TIME, DATETIME, TIMESTAMP data types

【讨论】:

  • @Jimmy....明白了。您可以存储在 DATETIME 中,然后在传递给 SOLR 进行搜索之前进行一些字符串操作。如果我正确理解要求
  • @Jimmy....如何为 1995-12-31T23:59:59Z 添加另一个 VARCHAR 列并使用 1995-12-31 23:59:59 的 DATETIME 列进行排序?
  • 我能做到,这意味着将几乎相同的东西保存两次,但这似乎很可惜。是否有转换它的功能?
猜你喜欢
  • 2011-02-07
  • 2013-06-19
  • 2017-07-03
  • 2021-09-27
  • 2017-05-31
  • 1970-01-01
  • 1970-01-01
  • 2011-04-17
  • 1970-01-01
相关资源
最近更新 更多