2011-02-02 70 views
0

我有一個選擇元件,其具有一定的值從0到12, 爲選擇元素的代碼,SQL數據類型來存儲01和10

  <select name="months"> 
       <option>--Month--</option> 
       <option value="0">0</option> 
       <option value="1" >1</option> 
       <option value="2" >2</option> 
       <option value="3" >3</option> 
       <option value="4" >4</option> 
       <option value="5" >5</option> 
       <option value="6" >6</option> 
       <option value="7" >7</option> 
       <option value="8" >8</option> 
       <option value="9" >9</option> 
       <option value="10" >10</option> 
       <option value="11" >11</option> 
       <option value="12" >12</option> 
      </select> 

我使用MySQL作爲數據庫和PHP爲後端腳本,我已經將數據類型設置爲float(在數據庫中)來存儲這些值,因爲在那裏要附加這個數據的年份值爲1.10。 問題是當我選擇2作爲年份和1作爲月份,它更新爲2.10 ,如果我選擇2作爲年份和10作爲月份,它會更新與上述2.10相同。 我該如何解決這個問題? 注意:通過使用varchar它是可能的。

+0

您使用的數據庫是?許多SQL數據庫都有用於存儲日期的日期數據類型。 – Oded 2011-02-02 13:58:51

+0

@Oded我正在使用MySQL – 2011-02-02 14:06:40

回答

1

爲什麼不能使用DateTime來存儲它,然後根據需要檢索單個組件?

我有同樣的問題,並相信我,使用正確的數據類型是更好的方法。 您創建一個新的DateTime對象,然後根據需要更改月份和日期,保存在數據庫中,然後在必要時檢索該信息並使用DateTime.Month等。

+0

我想我可以使用Varchar而不是DateTime – 2011-02-02 14:07:59

+0

千萬不要使用Varchar而不是DateTime。只要您嘗試選擇一個日期範圍,它就會回到您的後端。 – Mchl 2011-02-02 14:13:22

3

不要在數據庫中重新創建日期編碼。您應該將其作爲數據庫中的真實日期進行存儲。實現因您所使用的數據庫而異。

0

您應該使用MySql的DateTime數據類型之一 - 使用任何其他方式意味着計算和查詢日期將比應該更困難,並且會有更多的處理開銷。

對任務使用正確的數據類型。

0

是否有某種類型的業務規則,說你必須以非DateTime格式存儲它?

這是我可以考慮不使用DateTime的唯一原因,並且該信息將提供更好的參數來回答原始問題。