2011-02-02 72 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的唯一原因,并且该信息将提供更好的参数来回答原始问题。