2013-03-02 30 views
-1

嗨,我正在使用wamp服務器,並且我有一個帶有出生日期字段的數據庫。我只想知道哪些數據類型適合我的網站(1996年1月1日)指定出生日期的方式。 我想使用DATE_FORMAT()函數來獲取示例mysql查詢。大多數我見過的帖子使用SELECT和SELECT *。但我相信這應該被更新替換。和UPDATE用戶一樣SET dob = DATE_FORMAT(dob,'%m /%d /%Y')); 。 請找我如何誕生之日起低於指定代碼:在一個包含日日月的日期的mysql中所需的數據類型

<label id= "dob" for="dob">Date of birth:</label> 
     <!-- Month dropdown --> 
<select name="dob" id="month" onchange="" size="1"> 
    <option value="01">January</option> 
    <option value="02">February</option> 
    <option value="03">March</option> 
    <option value="04">April</option> 
    <option value="05">May</option> 
    <option value="06">June</option> 
    <option value="07">July</option> 
    <option value="08">August</option> 
    <option value="09">September</option> 
    <option value="10">October</option> 
    <option value="11">November</option> 
    <option value="12">December</option> 
</select> 

<!-- Day dropdown --> 
<select name="dob" id="day" onchange="" size="1"> 
    <option value="01">01</option> 
    <option value="02">02</option> 
    <option value="03">03</option> 
    <option value="04">04</option> 
    <option value="05">05</option> 
    <option value="06">06</option> 
    <option value="07">07</option> 
    <option value="08">08</option> 
    <option value="09">09</option> 
    <option value="10">10</option> 
    <option value="11">11</option> 
    <option value="12">12</option> 
    <option value="13">13</option> 
    <option value="14">14</option> 
    <option value="15">15</option> 
    <option value="16">16</option> 
    <option value="17">17</option> 
    <option value="18">18</option> 
    <option value="19">19</option> 
    <option value="20">20</option> 
    <option value="21">21</option> 
    <option value="22">22</option> 
    <option value="23">23</option> 
    <option value="24">24</option> 
    <option value="25">25</option> 
    <option value="26">26</option> 
    <option value="27">27</option> 
    <option value="28">28</option> 
    <option value="29">29</option> 
    <option value="30">30</option> 
    <option value="31">31</option> 
</select> 

<select id="birthyear" name="dob"> 
<option value="1996">1996</option> 
<option value="1995">1995</option> 
<option value="1994">1994</option> 
<option value="1993">1993</option> 
<option value="1992">1992</option> 
<option value="1991">1991</option> 
<option value="1990">1990</option> 
<option value="1989">1989</option> 
<option value="1988">1988</option> 
<option value="1987">1987</option> 
<option value="1986">1986</option> 
<option value="1985">1985</option> 
<option value="1984">1984</option> 
<option value="1983">1983</option> 
<option value="1982">1982</option> 
<option value="1981">1981</option> 
<option value="1980">1980</option> 
<option value="1979">1979</option> 
<option value="1978">1978</option> 
<option value="1977">1977</option> 
<option value="1976">1976</option> 
<option value="1975">1975</option> 
<option value="1974">1974</option> 
<option value="1973">1973</option> 
<option value="1972">1972</option> 
<option value="1971">1971</option> 
<option value="1970">1970</option> 
<option value="1969">1969</option> 
<option value="1968">1968</option> 
<option value="1967">1967</option> 
<option value="1966">1966</option> 
<option value="1965">1965</option> 
<option value="1964">1964</option> 
<option value="1963">1963</option> 
<option value="1962">1962</option> 
<option value="1961">1961</option> 
<option value="1960">1960</option> 
<option value="1959">1959</option> 
<option value="1958">1958</option> 
<option value="1957">1957</option> 
<option value="1956">1956</option> 
<option value="1955">1955</option> 
<option value="1954">1954</option> 
<option value="1953">1953</option> 
<option value="1952">1952</option> 
<option value="1951">1951</option> 
<option value="1950">1950</option> 
<option value="1949">1949</option> 
<option value="1948">1948</option> 
<option value="1947">1947</option> 
<option value="1946">1946</option> 
<option value="1945">1945</option> 
<option value="1944">1944</option> 
<option value="1943">1943</option> 
<option value="1942">1942</option> 
<option value="1941">1941</option> 
<option value="1940">1940</option> 
<option value="1939">1939</option> 
<option value="1938">1938</option> 
<option value="1937">1937</option> 
<option value="1936">1936</option> 
<option value="1935">1935</option> 
<option value="1934">1934</option> 
<option value="1933">1933</option> 
<option value="1932">1932</option> 
<option value="1931">1931</option> 
<option value="1930">1930</option> 
<option value="1929">1929</option> 
<option value="1928">1928</option> 
<option value="1927">1927</option> 
<option value="1926">1926</option> 
<option value="1925">1925</option> 
<option value="1924">1924</option> 
<option value="1923">1923</option> 
<option value="1922">1922</option> 
<option value="1921">1921</option> 
<option value="1920">1920</option> 
</select> 

     </p> 
+0

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-types.html – ultranaut 2013-03-02 15:58:33

+0

「哪種數據類型適合......出生日期......?」得到這個 - **日期**。 – 2013-03-02 15:59:47

回答

5

當在數據庫中保存日期,使用正確的數據類型DATEDATETIME。不要使用VARCHAR

優點:

  • 容易操縱
  • (如果一個鍵被定義
操縱
  • 指數將使用數據時無需鑄造

    缺點

    • 想不到的東西..

    如果你爲什麼要保存日期在這種格式January 01 1996的原因是因爲它比1996-01-01更具可讀性,那就不要。這可以在投影數據期間使用DATE_FORMAT()來實現。

  • +0

    我試過了,但記住日期數據類型,它顯示爲1996-01-01。除了DATE之外,沒有任何格式可以使用嗎?或者可能以任何方式操縱DATE或DATETIME以適應格式:January-01-1996。 OR是否必須使用DATE數據類型指定的格式? – Kaos 2013-03-02 16:01:01

    +0

    你可以使用PHP DateTime對象及其格式函數來渲染它:http://www.php.net/manual/en/datetime.format.php – 2013-03-02 16:03:11

    +1

    如果你有這種格式'January 01 1996''顯然它是* varchar *,那麼你如何在日期間操縱它?在這種情況下,您需要將其轉換爲不使用任何索引的實際日期,並且如果您擁有大型數據庫,則執行速度較慢。記住,數據庫是存儲,而不是顯示記錄':)'*我希望你現在明白了*。 – 2013-03-02 16:03:17

    1
    $query = "INSERT INTO users (username, date_of_birth) "; 
    $query .= "VALUES ('John Doe', 'DATE: Manual Date', '2008-7-04')"; 
    

    手動日期的作用與大多數腳本語言中的大多數StringToTime函數相似。

    存儲時間的另一種方式是實際效率更高一點,就是使用腳本語言(如PHP)將時間格式化爲切片機並將其作爲INT(11)存儲在數據庫中。所以,當從數據庫中取回microtime時,只需按照自己喜歡的方式顯示即可,而且只需要使用它進行計算即可。

    +0

    我在使用查詢中的DATE_FORMAT()格式化日期時仍然遇到問題。我見過的所有帖子都使用SELECT和SELECT *。但我相信這應該被更新替換。如在UPDATE'用戶'中設置'dob' = DATE_FORMAT('dob','%m /%d /%Y')); – Kaos 2013-03-03 19:17:36

    相關問題