2011-08-21 39 views
0

我已经完成了将2个mysql字段合并为一个的任务,然后使其可以搜索到新字段。我必须在我的数据库中合并前两年注册的和当年注册的两​​个字段。这两个字段的格式都是dd/mm/yyyy。我将这些字段合并到一个名为Years Registered的字段中,该字段的格式仍然是dd/mm/yyyy,但用逗号(,)分隔。我想知道如何去执行这个列上的几种不同类型的查询。我必须执行的MySQL查询是:显示所有(),显示所有日期之间:mm/yyyy和mm/yyyy,之前:mm/yyyy,之后:mm/yyyy搜索逗号分隔的mysql字段的最佳方法

任何帮助将不胜感激。

谢谢你的时间。

+5

看来以前的表格结构比现在更好。 –

+0

如果您使用正确的数据类型(日期而不是varchar)存储日期会更好。 看看str_to_date()函数,并按照已经建议的方式保持表格标准化。 –

+0

看到他们想要这样做,所以他们每年都可以编辑栏目以添加注册的新年,有什么想法? –

回答

2

我不喜欢它,但如果你需要,你可以使用一个解决方案:

提取日期使用起始日期= STR_TO_DATE(SUBSTRING( your_new_field,1,10)) 日期和结束日期= STR_TO_DATE(SUBSTRING(your_new_field,12,10))

+0

嗯,看到这个问题是,虽然每年一个企业已注册公司,它将被添加,所以你最终可以有一个字符串,如dd/mm/yyyy,dd/mm/yyyy,dd/mm/yyyy ,dd/mm/yyyy等 –

+0

我明白了。但是你可以有两列id_from_this_table,date_registered。当你为客户创建表单时,你可以简单地合并日期,因此在保存之前解析这个表单。在这种情况下,当需要创建复杂查询时,您应该连接2个表。 –

+0

谢谢andrej我会采取你的方法,在阅读标准化页面后,我自己在想这个 –

2

不要这样做! 我不知道它是如何完全可能的(我假设storedprocedurem中的一些SQL Stringoperations和Datefunctions),但它肯定会杀死数据库的性能。 为此使用关系。

这就是:(例如,用于三个日期..)

  • 方式更快
  • 多个可展开的
  • 容易代码
  • 更好的理解
  • 更容易移植到其他数据库

如果您有现有平台的问题y您必须支持,在支持两种替代方案的情况下使用代码库。这仍然是更容易,更好的维护,而不是用逗号分隔的列表

0

你的数据库将打破 '第一标准化表格(1NF)' 和将高度 ineffecient。

为了搜索选定日期,您必须查询表中的所有行,或使用LIKE,这也非常缓慢。

无论谁要求你这样做,都应该读取数据库规范化的this article

使用两个DATEDATETIME字段并将它们格式化为MySQL外部有什么问题?

相关问题