MySQL में करंट डेट और टाइम कैसे प्राप्त करें?


148

क्या DATETIME जैसा कोई मूल्य या कमांड है जिसे मैं वर्तमान तिथि और समय को सम्मिलित करने के लिए मैन्युअल क्वेरी में उपयोग कर सकता हूं?

INSERT INTO servers (
  server_name, online_status, exchange, disk_space, network_shares
) VALUES(
  'm1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE' 'DATETIME' 
)

अंत में उद्धृत DATETIME मान वह है जहां मैं वर्तमान तिथि और समय जोड़ना चाहता हूं।



6
अब (), dev.mysql.com/doc/refman/5.5/en/… ... देखें ... और, कृपया अगली बार, कम से कम कुछ शोध प्रयास अपने प्रश्न में रखें, इससे आसानी से गुगली की जा सकती है (इसलिए मैंने अभी इस प्रश्न को अस्वीकार कर दिया है )
dirkk

मेरा प्रश्न इस बात पर अधिक था कि मैं इसे ऊपर पोस्ट किए गए सिंटैक्स में कैसे उपयोग करूं।
शमूएल निकोलसन

1
उसके लिए फ्रैन्कॉसो उत्तर देखें। लेकिन यह बहुत, बहुत बुनियादी है, यह केवल एक फ़ंक्शन कॉल है। इसलिए, फिर से, आपको प्रश्न पोस्ट करने से पहले इस मुद्दे पर अधिक शोध प्रयास करना चाहिए और साथ ही आप एसक्यूएल पर कुछ निर्देश पढ़ना चाह सकते हैं।
dirkk

7
विडंबना। जब आप उत्तर पाने के लिए प्रयास करते हैं, तो आपको यह उत्तर मिलता है ... यह उत्तर!
जैच स्मिथ

जवाबों:


266

आप उपयोग कर सकते हैं NOW():

INSERT INTO servers (server_name, online_status, exchange, disk_space, network_shares, c_time)
VALUES('m1', 'ONLINE', 'exchange', 'disk_space', 'network_shares', NOW())

1
# 1054 - 'फील्ड लिस्ट' में अज्ञात कॉलम 'स्टैम्प' - क्या मुझे कुछ याद आ रहा है?
सैमुअल निकोलसन

44
बस स्टैम्प को अपने क्षेत्र के नाम के साथ बदलें, वास्तव में। बस कॉपी और पेस्ट न करें।
francisco.preller

8
यदि यह एक "तिथि" फ़ील्ड प्रकार है, तो आप भी उपयोग कर सकते हैंcurdate()
Tandy

32

CURRENT_TIMESTAMP () या अभी () का उपयोग करें

पसंद

INSERT INTO servers (server_name, online_status, exchange, disk_space,
network_shares,date_time) VALUES('m1','ONLINE','ONLINE','100GB','ONLINE',now() )

या

INSERT INTO servers (server_name, online_status, exchange, disk_space,
network_shares,date_time) VALUES('m1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE'
,CURRENT_TIMESTAMP() )

उस कॉलम नाम के साथ date_time बदलें जो आप समय सम्मिलित करने के लिए उपयोग करना चाहते हैं।


25

हालांकि कई स्वीकृत जवाब हैं, मुझे लगता है कि यह तरीका भी संभव है:

निम्नलिखित के रूप में अपने 'सर्वर' तालिका बनाएँ :

CREATE TABLE `servers`
(
      id int(11) NOT NULL PRIMARY KEY auto_increment,
      server_name varchar(45) NOT NULL,
      online_status varchar(45) NOT NULL,
      _exchange varchar(45) NOT NULL, 
      disk_space varchar(45) NOT NULL,
      network_shares varchar(45) NOT NULL,
      date_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
);

और आपका INSERT बयान होना चाहिए :

INSERT INTO servers (server_name, online_status, _exchange, disk_space, network_shares)
VALUES('m1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE');

मेरा पर्यावरण:

4 जीबी रैम के साथ कोर आई 3 विंडोज लैपटॉप, और मैंने उपरोक्त उदाहरण MySQL कार्यक्षेत्र 6.2 (संस्करण 6.2.5.0 बिल्ड 397 64 बिट्स) पर किया था।




2

सही उत्तर SYSDATE () है

INSERT INTO servers (
    server_name, online_status, exchange, disk_space,
    network_shares, date_time
)
VALUES (
    'm1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE', SYSDATE()
);

हम इस व्यवहार को बदल सकते हैं और NOW()उसी तरह व्यवहार कर सकते हैं जैसे SYSDATE()कि sysdate_is_now कमांड लाइन तर्क को सेट करकेTrue

ध्यान दें कि NOW()(जिसका CURRENT_TIMESTAMP()एक उपनाम है), SYSDATE()एक सूक्ष्म तरीके से भिन्न होता है :

SYSDATE () उस समय को लौटाता है जिस पर वह निष्पादित करता है। यह अब के लिए व्यवहार से अलग है (), जो एक निरंतर समय देता है जो उस समय को इंगित करता है जिस पर वक्तव्य निष्पादित करना शुरू हुआ था। (एक संग्रहीत फ़ंक्शन या ट्रिगर के भीतर, अब () उस समय को वापस करता है जिस पर फ़ंक्शन या ट्रिगर स्टेटमेंट निष्पादित करना शुरू किया गया था।)

जैसा कि एरंडी द्वारा इंगित किया गया है , DEFAULTखंड के साथ अपनी तालिका बनाना सबसे अच्छा है ताकि जब आप एक नई पंक्ति डालें तो कॉलम टाइमस्टैम्प के साथ स्वचालित रूप से आबाद हो जाए:

date_time datetime NOT NULL DEFAULT SYSDATE()

आप में वर्तमान दिनांक चाहते हैं युग प्रारूप है, तो आप उपयोग कर सकते हैं UNIX_TIMESTAMP () । उदाहरण के लिए:

select now(3), sysdate(3), unix_timestamp();

उपज होगी

+-------------------------+-------------------------+------------------+
| now(3)                  | sysdate(3)              | unix_timestamp() |
+-------------------------+-------------------------+------------------+
| 2018-11-27 01:40:08.160 | 2018-11-27 01:40:08.160 |       1543282808 |
+-------------------------+-------------------------+------------------+

सम्बंधित:


1

डेटाबेस डिजाइन में, मैं निरंतरता और अनुक्रमण / खोज / तुलना प्रदर्शन के लिए यूनिक्सटाइम का उपयोग करने की सलाह देता हूं।

UNIX_TIMESTAMP() 

एक हमेशा मानव पठनीय प्रारूपों में परिवर्तित हो सकता है , के रूप में अंतर्राष्ट्रीयकरण व्यक्तिगत रूप से सबसे सुविधाजनक है।

FROM_ UNIXTIME (unix_timestamp, [format ])

1

İ यदि आप परिवर्तन को डिफ़ॉल्ट मान देते हैं CURRENT_TIMESTAMPतो यह अधिक प्रवाह है,

ALTER TABLE servers MODIFY COLUMN network_shares datetime NOT NULL DEFAULT CURRENT_TIMESTAMP;

0

आप न केवल now(), current_timestamp()और भी उपयोग कर सकते हैं localtimestamp()। गलत प्रदर्शन टाइमस्टैम्प का मुख्य कारण एकल उद्धरणों के साथ अब () डालना है ! यह MySQL कार्यक्षेत्र में मेरे लिए काम नहीं करता था क्योंकि इस IDE में mysql फ़ंक्शंस के लिए एकल उद्धरण जोड़े गए थे और मुझे पहले से पहचान नहीं थी)

MySQL कार्यक्षेत्र में एकल उद्धरण के साथ कार्यों का उपयोग न करें। यह काम नहीं करता है।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.