簡體   English   中英

在MySQL / PHP中存儲用戶BIRTHDATES的最佳方法是什么?

[英]What is the best way to store user BIRTHDATES in MySQL/PHP?

在MySQL / PHP中存儲用戶BIRTHDATES的最佳方法是什么?為什么?

我目前以以下格式將其存儲為VARCHAR(10)

MM-DD-YYYY

...但是我覺得這不是最好的方法,尤其是因為我有時會在那個領域看到無效的年份。

請不要只說出最好的方法,還要解釋為什么它是最好的方法,這樣我才能說服改變我網站上處理生日的整個方式,這是一項艱巨的任務。

謝謝。

mySQL具有日期的本機字段類型: DATE

請不要只說出最好的方法,還要解釋為什么它是最好的方法,這樣我才能說服改變我網站上處理生日的整個方式,這是一項艱巨的任務。

不知道要給出什么進一步的解釋:)如果要將日期存儲在mySQL表中,則DATE只是一種正確的選擇。 它帶有針對><BETWEEN類的查詢的優化索引,可以快速排序,並且可以處理1001-9999年之間的任何日期,因此這確實是可行的方法。

將其存儲為DATE類型,因為它對於涉及字段的存儲和操作(按日期進行過濾等)非常有效。

這是帶有驗證的php部分,在此之前,請將Err變量聲明為null。

<?php
    if (! isset ( $_POST ['yearOfBirth'] ) || empty ( $_POST ['yearOfBirth'] )) {
        $isFormValid = FALSE;
        $yearErr = "Please select year";

        if (! isset ( $_POST ['monthOfBirth'] ) || empty ( $_POST ['monthOfBirth'] )) {
            $isFormValid = FALSE;
            $monthErr = "Please select month";

            if (! isset ( $_POST ['dayOfBirth'] ) || empty ( $_POST ['dayOfBirth'] )) {
                $isFormValid = FALSE;
                $dateErr = "Please complete the dob";

                $dob = $_POST ['yearOfBirth'] . "-" . $_POST ['monthOfBirth'] . "-" . $_POST ['dayOfBirth'];
//              exit(print_r($_POST));
            }
        }
    }
---------------------------
Here is the SQL part.
----------------------------------
$dob = $_POST["yearOfBirth"] . "-" . $_POST["monthOfBirth"] . "-" . $_POST["dayOfBirth"];

$register = "INSERT INTO tablename( dob, )
    VALUES('$dob',)";

希望這可以幫助

正如其他人已經回答的那樣:MySQL具有僅用於日期的DATE格式,但是如果您需要時間和日期,則還有DATETIME和TIMESTAMP。

DATE需要3個字節的存儲空間,DATETIME需要8個字節的存儲空間,TIMESTAMP需要4個存儲空間。

順便說一下,INT也需要4個字節。 如果您只是使用沒有相應時間的DATE(例如您的生日),那么這並不是一個真正的問題,但是有一篇文章提出了一些有關為什么您可能要避免使用DATETIME的觀點,我認為這是值得的閱讀。 還值得閱讀注釋,因為有些人已經注意到文章中的建議並不總是可行的:例如,查詢優化器有時會遇到日期函數的麻煩,並且難以將日期存儲為unix時間戳。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM