date()
যদি আমি কোনও মাইএসকিউএল datetime
টাইপ কলামে ফলাফল toোকাতে চাই তবে পিএইচপি-তে ফাংশনে যাওয়ার সঠিক বিন্যাসটি কী ?
আমি চেষ্টা করে যাচ্ছিলাম date("Y-M-D G:i:s")
তবে কেবলমাত্র "0000-00-00 00:00:00" প্রতিবার .োকানো হয়।
date()
যদি আমি কোনও মাইএসকিউএল datetime
টাইপ কলামে ফলাফল toোকাতে চাই তবে পিএইচপি-তে ফাংশনে যাওয়ার সঠিক বিন্যাসটি কী ?
আমি চেষ্টা করে যাচ্ছিলাম date("Y-M-D G:i:s")
তবে কেবলমাত্র "0000-00-00 00:00:00" প্রতিবার .োকানো হয়।
উত্তর:
সমস্যাটি হ'ল আপনি ব্যবহার করছেন 'M'
এবং 'D'
, যা একটি পাঠ্য উপস্থাপনা, মাইএসকিউএল ফর্ম্যাটটির একটি সংখ্যক উপস্থাপনা আশা করছে2010-02-06 19:30:13
চেষ্টা করুন: date("Y-m-d H:i:s")
যা সংখ্যার সমতুল্য ব্যবহার করে।
সম্পাদনা: এতে স্যুইচ করা G
হয়েছে H
, যদিও এর প্রভাব নাও থাকতে পারে, আপনি সম্ভবত শীর্ষস্থানীয় 0 টি সহ 24 ঘন্টা বিন্যাসটি ব্যবহার করতে চান।
পিএইচপি এর date()
ম্যানুয়াল পৃষ্ঠার মন্তব্যগুলি থেকে :
<?php $mysqltime = date ("Y-m-d H:i:s", $phptime); ?>
আপনার 'ওয়াই' সঠিক ছিল - এটি পুরো বছর, তবে 'এম' একটি তিনটি অক্ষরের মাস, যখন 'এম' একটি দুই অঙ্কের মাস। 'ডি' এর পরিবর্তে 'ডি' দিয়ে একই সমস্যা। 'জি' হল 1 বা 2 ডিজিটের ঘন্টা, যেখানে 'এইচ' এর দরকার হয় যখন সর্বদা 0 থাকে।
এখানে একটি বিকল্প সমাধান রয়েছে: যদি আপনার পিএইচপি-তে তারিখটি টাইমস্ট্যাম্প হিসাবে থাকে, পিএইচপি দিয়ে এটি পরিচালনা করে বাইপাস করুন এবং ডিবিটিকে 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 |
+---------------------+
আমি একটি মাইএসকিউএল ডেটটাইম কলামে sertোকানো একটি পরিবর্তনশীল তৈরি করতে নীচের পিএইচপি কোডটি ব্যবহার করি।
$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`
মাইএসকিউএল DATETIME কলামে টাইম স্ট্যাম্প ফর্ম্যাট করুন:
strftime('%Y-%m-%d %H:%M:%S',$timestamp);
আমি এই ফাংশনটি ব্যবহার করি (পিএইচপি 7)
function getDateForDatabase(string $date): string {
$timestamp = strtotime($date);
$date_formated = date('Y-m-d H:i:s', $timestamp);
return $date_formated;
}
পিএইচপি (পিএইচপি <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) {
কেন টাইপ ঘোষণা করার সময় একটি ত্রুটি নিক্ষেপ আমি বলতে যথেষ্ট পিএইচপি জানে না।
যদি আপনি টাইমস্ট্যাম্প ব্যবহার না করেন তবে পিএইচপি থেকে তারিখ () পদ্ধতি ব্যবহার করার দরকার নেই। যদি dateposted
একটি ডেটটাইম কলাম হয় তবে আপনি বর্তমান তারিখটি এভাবে সন্নিবেশ করতে পারেন:
$db->query("INSERT INTO table (dateposted) VALUES (now())");
এটি একটি সরল উত্তরের জন্য আমাকে উন্মাদ করে চলেছে। অবশেষে আমি এই ফাংশনটি তৈরি করেছি যা দেখে মনে হয় যে সমস্ত ইনপুট ধরা পড়ে এবং একটি ভাল এসকিউএল স্ট্রিং দেয় যা সঠিক বা কমপক্ষে বৈধ এবং চেকযোগ্য। এটি যদি 1999-12-31 হয় তবে এটি সম্ভবত ভুল তবে মাইএসকিউএলে কোনও খারাপ ত্রুটি ফেলবে না।
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
পিএইচপি 7 + এ শ্রেণি ব্যবহার করা :
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")
।
অথবা, যদি আপনি মাইএসকিউএলকে সমস্ত কিছু পরিচালনা করতে পছন্দ করেন তবে কিছু উত্তরের সূত্র অনুসারে, আমি UTC_TIMESTAMP
একই ফলাফলের সাথে মাইএসকিউএল সন্নিবেশ করবো ।
দ্রষ্টব্য: আমি বর্তমান সময়ের উল্লেখ করে প্রশ্নটি বুঝতে পেরেছি।
এটি এটি করার আরও সঠিক উপায়। এটি আরও নির্ভুলতা দিয়ে সেকেন্ডের পিছনে দশমিক রাখে।
$now = date('Y-m-d\TH:i:s.uP', time());
লক্ষ্য করুন .uP
।