date()
अगर मैं एक MySQL datetime
प्रकार कॉलम में परिणाम सम्मिलित करना चाहता हूं, तो PHP में फ़ंक्शन को पास करने के लिए सही प्रारूप क्या है ?
मैं कोशिश कर रहा हूँ, date("Y-M-D G:i:s")
लेकिन हर बार "0000-00-00 00:00:00" सम्मिलित करता है।
date()
अगर मैं एक MySQL datetime
प्रकार कॉलम में परिणाम सम्मिलित करना चाहता हूं, तो PHP में फ़ंक्शन को पास करने के लिए सही प्रारूप क्या है ?
मैं कोशिश कर रहा हूँ, date("Y-M-D G:i:s")
लेकिन हर बार "0000-00-00 00:00:00" सम्मिलित करता है।
जवाबों:
समस्या यह है कि आप उपयोग कर रहे हैं 'M'
और 'D'
, जो एक पाठीय अभ्यावेदन हैं, MySQL प्रारूप के एक संख्यात्मक प्रतिनिधित्व की उम्मीद कर रहा है2010-02-06 19:30:13
कोशिश करें: date("Y-m-d H:i:s")
जो संख्यात्मक समकक्षों का उपयोग करता है।
संपादित करें: पर स्विच G
किया H
जा सकता है, हालांकि इसका प्रभाव नहीं हो सकता है, आप संभवतः अग्रणी 0s के साथ 24-घंटे के प्रारूप का उपयोग करना चाहते हैं।
Php के date()
मैनुअल पेज की टिप्पणियों से :
<?php $mysqltime = date ("Y-m-d H:i:s", $phptime); ?>
आपके पास 'Y' सही था - यह एक पूर्ण वर्ष है, लेकिन 'M' एक तीन वर्ण वाला महीना है, जबकि 'm' एक दो अंक वाला महीना है। 'डी' के बजाय 'डी' के साथ एक ही मुद्दा। 'G' एक 1 या 2 अंक का घंटा होता है, जहां 'H' की जरूरत पड़ने पर हमेशा अग्रणी 0 होता है।
यहाँ एक वैकल्पिक समाधान है: यदि आपके पास PHP में एक टाइमस्टैम्प के रूप में तारीख है, तो इसे PHP के साथ संभाल कर बाईपास करें और DB को FROM_UNIXTIME
फ़ंक्शन का उपयोग करके इसे बदलने का ख्याल रखें ।
mysql> insert into a_table values(FROM_UNIXTIME(1231634282));
Query OK, 1 row affected (0.00 sec)
mysql> select * from a_table;
+---------------------+
| a_date |
+---------------------+
| 2009-01-10 18:38:02 |
+---------------------+
मैं एक चर बनाने के लिए निम्नलिखित PHP कोड का उपयोग करता हूं जिसे मैं MySQL DATETIME कॉलम में सम्मिलित करता हूं।
$datetime = date_create()->format('Y-m-d H:i:s');
यह सर्वर की वर्तमान तिथि और समय आयोजित करेगा।
$date_old = '23-5-2016 23:15:23';
//Date for database
$date_for_database = date ("Y-m-d H:i:s", strtotime($date_old));
//Format should be like 'Y-m-d H:i:s'`enter code here`
MySQL DATETIME कॉलम के लिए प्रारूप समय मोहर:
strftime('%Y-%m-%d %H:%M:%S',$timestamp);
मैं इस फ़ंक्शन का उपयोग करता हूं (PHP 7)
function getDateForDatabase(string $date): string {
$timestamp = strtotime($date);
$date_formated = date('Y-m-d H:i:s', $timestamp);
return $date_formated;
}
PHP के पुराने संस्करण (PHP <7)
function getDateForDatabase($date) {
$timestamp = strtotime($date);
$date_formated = date('Y-m-d H:i:s', $timestamp);
return $date_formated;
}
function getDateForDatabase(string $date) : string {
करने के लिए function getDateForDatabase($date) {
क्यों प्रकार घोषणाओं एक त्रुटि फेंक मैं बताने के लिए पर्याप्त पीएचपी पता नहीं है।
अगर आपको टाइमस्टैम्प का उपयोग नहीं करना है, तो PHP से दिनांक () विधि का उपयोग करने की कोई आवश्यकता नहीं है। यदि dateposted
एक डेटाइम कॉलम है, तो आप वर्तमान तिथि को इस तरह सम्मिलित कर सकते हैं:
$db->query("INSERT INTO table (dateposted) VALUES (now())");
यह मुझे एक सरल उत्तर की तलाश में पागल कर रहा है। अंत में मैंने यह फ़ंक्शन बनाया जो सभी इनपुट को पकड़ता है और एक अच्छा एसक्यूएल स्ट्रिंग देता है जो सही या कम से कम मान्य और जाँच योग्य है। अगर यह 1999-12-31 है, तो यह शायद गलत है, लेकिन MySQL में कोई गलत त्रुटि नहीं करेगा।
function MakeSQLDate($date) {
if (is_null($date)) {
//use 1999-12-31 as a valid date or as an alert
return date('Y-m-d', strtotime('1999-12-31'));
}
if (($t = strtotime($date)) === false) {
//use 1999-12-31 as a valid date or as an alert
return date('Y-m-d', strtotime('1999-12-31'));
} else {
return date('Y-m-d H:i:s', strtotime($date));
}
}
DateTime
PHP7 + में क्लास का उपयोग करना :
function getMysqlDatetimeFromDate(int $day, int $month, int $year): string {
$dt = new DateTime();
$dt->setTimezone(new DateTimeZone('UTC'));
$dt->setDate($year, $month, $day);
$dt->setTime(0, 0, 0, 0); // set tine to midnight
return $dt->format("Y-m-d H:i:s");
}
स्वीकृत उत्तर के लिए एक छोटा सा परिशिष्ट: यदि डेटाबेस datetime
को यूटीसी (मैं हमेशा क्या करता हूं) के रूप में संग्रहीत किया जाता है, तो आपको gmdate("Y-m-d H:i:s")
इसके बजाय उपयोग करना चाहिए date("Y-m-d H:i:s")
।
या, यदि आप MySQL को सब कुछ संभालने देना पसंद करते हैं, जैसा कि कुछ उत्तर सुझाते हैं, तो मैं UTC_TIMESTAMP
उसी परिणाम के साथ MySQL सम्मिलित करूंगा ।
नोट: मुझे वर्तमान समय का संदर्भ देते हुए प्रश्न समझ में आया।
यह इसे करने का अधिक सटीक तरीका है। यह अधिक सटीकता देने वाले सेकंड के पीछे दशमलव रखता है।
$now = date('Y-m-d\TH:i:s.uP', time());
ध्यान दें .uP
।
अधिक जानकारी: https://stackoverflow.com/a/6153162/8662476