2011-08-29 35 views
1

我有一个叫做education1数据库,所有内容都存储在表courses1在PHPMyAdmin字段中存储星期几?

这些课程中的字段:

class VARCHAR(255), 
classinfo VARCHAR(255), 
dayofweek VARCHAR(255) 

不过,我想存储的日子在DATE FORMAT中的一周,看看http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_str-to-date,但是这是查询。

我想知道如何存储星期一至星期五的指定日期,星期运行。

我试图ENUM,但它不会让我用破折号符号来显示: 周一 - 周五或周二 - 周三

+3

如果你存储一个**指数这是更好**天(0-6)或(1-7),并在你的PHP代码解析它,更轻,更快检索。 –

+2

另一种选择是使用['ENUM'](http://dev.mysql.com/doc/refman/5.1/en/enum.html)。 – outis

回答

2

你可以做两件事情之一(请注意,这些建议,您可以做了一大堆其他东西)。

  • 店一天的指数TINYINT(0-6)或(1-7),以及解析它在你的PHP脚本来显示为一天的名字。
  • 使用ENUM,例如:

    dayofweek ENUM('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday') 
    

    那云在CREATE TABLE查询。

如上所述,还有其他的事情你可以做,这些可能是最有效率和最有效的问题。

+0

我一定会选择ENUM,因为它允许您在不更改数据或代码的情况下更改数据库中的排序顺序。例如,当“星期天”在“星期一”之后时。 – str

+0

确实。尽管我为此提供了两种解决方案,但有些人会更喜欢索引,因为它比ENUM更轻。 –

+0

当我将外键绑定到ENUM列时,我目前遇到了很大的麻烦 - 这导致了无处不在的数据翻倍(一个需要反复设置相同的ENUM,以后没有机会改变任何东西);所以我会坚持指数; – feeela

1

请勿使用ENUM。

请勿使用varchar 255字段来保存不超过12个字符(取决于语言)的日期或字符串。

如果您想要在数据库中保留星期几的表示形式,然后使用您可以在查询中使用的格式存储它以取消引用日期值。 MySQL有这个功能 - DAYOFWEEK(date)

然后,如果你必须,维护一个表将它们映射回字符串。

0

只需使用SMALLINT(1)即可。正如我记得一周有7天。所以:1-7个值。并阅读正常化。我认为在Class中应该有class_id。

所以,这应该是这样的:

curses1

ID | class_id |星期几

ID |名称|信息

查询:SELECT L.dayofweek, R.name, R.info FROM curses1 L LEFT JOIN clases R ON L.class_id = R.id