[英]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.