2011-08-29 71 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