মাইএসকিউএল কোয়েরিতে টাইমস্ট্যাম্পটিকে তারিখে রূপান্তর করুন


187

আমি timestampমাইএসকিউএল এ একটি তারিখে রূপান্তর করতে চাই ।

আমি ইউ। রেকর্ডিং ফিল্ডটি টেক্সট ফাইলে একটি হিসাবে ফর্ম্যাট করতে চাই yyyy-mm-dd

এখানে আমার এসকিউএল:

$sql = requestSQL("SELECT user.email, 
                   info.name, 
                   FROM_UNIXTIME(user.registration),
                   info.news
                   FROM user, info 
                   WHERE user.id = info.id ", "export members");

আমি এর সাথে তারিখ রূপান্তর চেষ্টা করেছিলাম:

DATE_FORMAT(user.registration, '%d/%m/%Y')
DATE(user.registration)

আমি টেক্সট ফাইলটি লেখার আগে ফলাফলটি প্রতিধ্বনিত করেছি এবং আমি পেয়েছি:

ইমেল 1; নাম 1; DATE_FORMAT (ব্যবহারকারীর নিবন্ধন, '% d /% m /% Y'); নিউজ 1

email2; NAME2; news2

আমি কীভাবে সেই ক্ষেত্রটিকে তারিখে রূপান্তর করতে পারি?


এর ঠিক মত ফাইল সংরক্ষণ করা? স্কেল কোয়েরিটি চালানোর জন্য আপনি কী কোডটি ব্যবহার করছেন?
সীনব্রিডেন

1
আমি আমার প্রশ্নটি সম্পাদনা করেছি, রিকোয়েট এসকিউএল কোয়েরিটি চালাচ্ছে
রেমিয়ারি

উত্তর:


371
DATE_FORMAT(FROM_UNIXTIME(`user.registration`), '%e %b %Y') AS 'date_formatted'

2
মাইএসকিউএল ৫..6.২৩ অনুসারে, আমি দেখতে পেয়েছি যে FROM_UNIXTIME () এর মান সরাসরি প্রবেশ করা উচিত: যেমন, DATE_FORMAT (FROM_UNIXTIME (ব্যবহারকারীর নিবন্ধন), '% ই% বি% ওয়াই') এএস '
তারিখ_ ফর্ম্যাটড

নির্বাচন করুন * কোথা থেকে DATE_FORMAT ব্যবহারকারীদের (FROM_UNIXTIME ( usersuser_created_at), '% Y-% b-% e') = '2015-03-06' এই সঠিক ফর্ম্যাট বা আমি এটিকে সংশোধন করব?
ধীররাজ থেদিজে

2
@ ধীরাজ থেদিজেজে এটি 2018-নভেম্বর -6 হিসাবে প্রদর্শিত হবে। আপনি '%Y-%m-%d'এটি পিএইচপি-তে ফর্ম্যাট করার মতো সন্ধান করতে পারেন (date('Y-m-d',$row->user_created_at))- এটি (উভয় রূপ, এসকিউএল এবং পিএইচপি উভয়ই) 2018-11-06 হিসাবে দেখায়
ক্রিস এস

আপনি যদি এই ফ্যাশনে "এইচএইচ: মিমি: এসএস" সময় যোগ করতে চান তবে স্ট্রিং '% H:% i:% s' এ যুক্ত করুন
luis.ap.uyen

63

এমওয়াইএসকিউএলে ডেটে টাইমস্ট্যাম্প রূপান্তর করুন

পূর্ণসংখ্যা টাইমস্ট্যাম্প দিয়ে টেবিলটি তৈরি করুন:

mysql> create table foo(id INT, mytimestamp INT(11));
Query OK, 0 rows affected (0.02 sec)

কিছু মান sertোকান

mysql> insert into foo values(1, 1381262848);
Query OK, 1 row affected (0.01 sec)

দেখা যাক

mysql> select * from foo;
+------+-------------+
| id   | mytimestamp |
+------+-------------+
|    1 |  1381262848 |
+------+-------------+
1 row in set (0.00 sec)

নম্বরটি একটি টাইমস্ট্যাম্পে রূপান্তর করুন:

mysql> select id, from_unixtime(mytimestamp) from foo;
+------+----------------------------+
| id   | from_unixtime(mytimestamp) |
+------+----------------------------+
|    1 | 2013-10-08 16:07:28        |
+------+----------------------------+
1 row in set (0.00 sec)

এটিকে একটি পঠনযোগ্য ফর্ম্যাটে রূপান্তর করুন:

mysql> select id, from_unixtime(mytimestamp, '%Y %D %M %H:%i:%s') from foo;
+------+-------------------------------------------------+
| id   | from_unixtime(mytimestamp, '%Y %D %M %H:%i:%s') |
+------+-------------------------------------------------+
|    1 | 2013 8th October 04:07:28                       |
+------+-------------------------------------------------+
1 row in set (0.00 sec)

দয়া করে% h থেকে% এইচ ঠিক করুন
টমোট

61

কেবল একটি তারিখ পেতে আপনি castএটি করতে পারেন

cast(user.registration as date)

এবং একটি নির্দিষ্ট ফর্ম্যাট ব্যবহার পেতে date_format

date_format(registration, '%Y-%m-%d')

এসকিউএলফিডাল ডেমো


এটি একই ফলাফল দেয়, castালাই (তারিখ হিসাবে ব্যবহারকারীর নিবন্ধকরণ) ক্ষেত্রের মানটির পরিবর্তে প্রদর্শিত হয়
রেমিরিমি

5
এটি যদিও কাজ করেছে - কাস্ট হয়েছে (থেকে_উনিক্সটাইম (ইউজার। রেজিস্ট্রেশন) এএস তারিখ)
এরিক নেস

আমার নির্দিষ্ট তারিখের ফর্ম্যাট রয়েছে যা এটি আমার পক্ষে কাজ করেছে পাশাপাশি সম্ভাব্য ধন্যবাদ
সাবের তাবতাবই ইয়াজদি

ঘন্টা মিনিট এবং
এনারিক

আমি মনে করি যে এই উত্তরটি সংক্ষিপ্ত এবং স্পষ্ট সমাধান। আমি এই পছন্দ।
রোমান মতভেভ

18

যদি registrationক্ষেত্রের ধরনের প্রকৃতপক্ষে TIMESTAMPআপনি শুধু কাজ করতে সক্ষম হওয়া উচিত:

$sql = "SELECT user.email, 
           info.name, 
           DATE(user.registration), 
           info.news
      FROM user, 
           info 
     WHERE user.id = info.id ";

এবং রেজিস্ট্রেশনটি yyyy-mm-dd হিসাবে প্রদর্শিত হবে


আমি চেষ্টা করেছি কিন্তু আমি একই ফলাফল পেয়েছি: তারিখ (ব্যবহারকারীর রেজিস্ট্রেশন) ক্ষেত্রের মানটির পরিবর্তে প্রদর্শন করা হচ্ছে
রেজিমি

কারও পরামর্শ অনুসারে, আপনি কি সরাসরি মাইএসকিএল ক্লায়েন্ট ব্যবহার করে সফলভাবে ক্যোয়ারী চালাতে পারবেন? আমি রিকুইটিএসকিউএল ফাংশনটি শুনিনি, এটি ঠিক কী করে?
cs0lar

দুর্ভাগ্যক্রমে আমি সরাসরি একটি মাইএসকিএল ক্লায়েন্ট ব্যবহার করতে সক্ষম নই, আমার নিজের সার্ভার নেই ... আমি রিকোয়েট এসকিউএল সরবরাহ করেছি, মূলত এটি কেবল অনুসন্ধান চালায় এবং ইমেল প্রেরণে ত্রুটি পরীক্ষা করে যদি পরীক্ষা করে ...
রেমিরি

2
আসলে আমি বুঝতে পেরেছিলাম যে আমার ক্ষেত্রটি একটি বিগিন্ট টাইপ এবং টাইমস্ট্যাম্প নয়। কেবলমাত্র সামগ্রীটি একটি টাইমস্ট্যাম্প ছিল (1328649722), সুতরাং সে কারণেই এটি কার্যকর হয়নি। এখন FROM_UNIXTIME দিয়ে সবকিছু ঠিক আছে!
রেমিরিমি

এই কাজটি সূক্ষ্মভাবে আমি তারিখের সময় দিয়ে চেষ্টা করেছি কারণ কেবলমাত্র তারিখের অংশটি পাওয়া দরকার to
এরিক্সিকনস

10

কেবল মাইএসকিএল-র তারিখ ফাংশনটি ব্যবহার করুন:

mysql> select DATE(mytimestamp) from foo;

5
SELECT DATE(UNIX_TIMESTAMP())থুতু ফেলে NULLআমার মাইএসকিউএল 5.7.14 মধ্যে
Xenos

তারিখটি চেষ্টা করুন (CURRENT_TIMESTAMP ())
মোরি


2

আপনি যদি আপনার আউটপুটে কোয়েরি পেয়ে থাকেন তবে আপনাকে অবশ্যই আমাদের কোডটি দেখাতে হবে যা ফলাফলটি প্রতিধ্বনিত করে। আপনি কি কোডটি পোস্ট করতে পারবেন যা রিকুইটিএসকিউএল কল করে?

উদাহরণস্বরূপ, আপনি যদি পিএইচপিতে একক উদ্ধৃতি ব্যবহার করেছেন তবে এটি ভেরিয়েবলের নাম মুদ্রণ করবে

echo 'foo is $foo'; // foo is $foo

এটি আপনার সমস্যার মতো মনে হচ্ছে এবং আমি ইতিবাচক কারণ এটি is

এছাড়াও, এটি আপনাকে আরও ইনফ্রোমেশন দিয়ে সাহায্য করে কিনা তা দেখতে @ প্রতীকটি সরিয়ে দেওয়ার চেষ্টা করুন।

যাতে

$SQL_result = @mysql_query($SQL_requete); // run the query

হয়ে

  $SQL_result = mysql_query($SQL_requete); // run the query

কোয়েরিতে কোনও ত্রুটি ছোঁড়া থাকলে এটি কোনও ত্রুটি দমন বন্ধ করে দেবে।



2

FROM_UNIXTIME(unix_timestamp, [format]) আপনার যা দরকার তা হল

FROM_UNIXTIME(user.registration, '%Y-%m-%d') AS 'date_formatted'

FROM_UNIXTIMEএকটি সংখ্যা মান পায় এবং এটি একটি DATEবস্তুতে রূপান্তরিত করে ,
বা যদি একটি ফর্ম্যাট স্ট্রিং দেওয়া হয় তবে এটি স্ট্রিং হিসাবে ফিরে আসে।

পুরানো সমাধানটি ছিল প্রাথমিক তারিখের অবজেক্টটি পেতে এবং এটি একটি দ্বিতীয় ফাংশন দিয়ে ফর্ম্যাট করা DATE_FORMAT... তবে এটি আর প্রয়োজন হয় না


1

চেষ্টা করুন:

SELECT strftime("%Y-%d-%m", col_name, 'unixepoch') AS col_name

এটি মিলসেকেন্ডে টাইমস্ট্যাম্পটি yyyy-mm-dd স্ট্রিংয়ে ফর্ম্যাট করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.