Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

जावा में युग को mySQL टाइमस्टैम्प में कैसे बदलें

java.time

मार्च 2014 में जावा एसई 8 की रिलीज के साथ, पुरानी और त्रुटि-प्रवण विरासत डेट-टाइम एपीआई (java.util दिनांक-समय प्रकार और उनके स्वरूपण प्रकार, SimpleDateFormat आदि) java.time . द्वारा प्रतिस्थापित किया गया था , आधुनिक दिनांक-समय API। निम्न तालिका java.time . के साथ ANSI SQL प्रकारों की मैपिंग को दर्शाता है प्रकार:

<थ>जावा एसई 8
एएनएसआई एसक्यूएल
तारीख स्थानीय दिनांक
समय स्थानीय समय
टाइमस्टैम्प LocalDateTime
TIMEZONE के साथ समय ऑफ़सेटटाइम
टाइमज़ोन के साथ टाइमस्टैम्प ऑफ़सेटडेटटाइम

ध्यान दें कि ZonedDateTime और Instant किसी भी JDBC ड्राइवर द्वारा समर्थित नहीं हैं जबकि कुछ ड्राइवर उदा। PostgreSQL भी OffsetTime का समर्थन नहीं करता है / TIME [ WITHOUT TIMEZONE ] . साथ ही, ध्यान दें कि सभी OffsetDateTime उदाहरण यूटीसी में होना चाहिए (ऑफसेट 0 है)। ऐसा इसलिए है क्योंकि बैकएंड उन्हें यूटीसी के रूप में संग्रहीत करता है।

JDBC में इसका उपयोग कैसे करें?

वर्तमान OffsetDateTime को सम्मिलित करने के लिए एक नमूना कोड नीचे दिया गया है UTC में, columnfoo . में (जो TIMESTAMP WITH TIMEZONE . का है टाइप करें):

OffsetDateTime odt = Instant.now().atOffset(ZoneOffset.UTC);
PreparedStatement st = conn.prepareStatement("INSERT INTO mytable (columnfoo) VALUES (?)");
st.setObject(1, odt);
st.executeUpdate();
st.close();

एक Instant समयरेखा पर एक तात्कालिक बिंदु का प्रतिनिधित्व करता है और एक समय क्षेत्र से स्वतंत्र होता है यानी इसमें +00:00 का समय क्षेत्र ऑफसेट होता है घंटे।

OffsetDateTime retrieve को पुनः प्राप्त करने के लिए नीचे एक नमूना कोड दिया गया है columnfoo . से :

Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM mytable WHERE <some condition>");
while (rs.next()) {
    // Assuming the column index of columnfoo is 1
    OffsetDateTime odt = rs.getObject(1, OffsetDateTime.class));
    System.out.println(odt);
}
rs.close();
st.close();

बस अगर आपको एक OffsetDateTime को बदलने की जरूरत है एक अलग ऑफसेट के साथ दूसरे में:

ऐसा करने के कई तरीके हैं लेकिन मैं ज्यादातर OffsetDateTime#withOffsetSameInstant , एक OffsetDateTime . कन्वर्ट करने के लिए एक अलग टाइमज़ोन ऑफ़सेट के साथ दूसरे में उदा.

import java.time.Instant;
import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;

public class Main {
    public static void main(String[] args) {
        // A sample OffsetDateTime in UTC.
        OffsetDateTime odt = Instant.now().atOffset(ZoneOffset.UTC);
        System.out.println(odt);

        OffsetDateTime offsetTimeAtOffset0100 = odt.withOffsetSameInstant(ZoneOffset.of("+02:00"));
        System.out.println(offsetTimeAtOffset0100);

        // Time at JVM's default timezone offset
        ZoneOffset jvmTzOffset = ZonedDateTime.now(ZoneId.systemDefault()).getOffset();
        OffsetDateTime offsetTimeAtJvmTzOffset = odt.withOffsetSameInstant(jvmTzOffset);
        System.out.println(offsetTimeAtJvmTzOffset);
    }
}

आउटपुट:

2021-05-29T13:36:15.258076Z
2021-05-29T15:36:15.258076+02:00
2021-05-29T14:36:15.258076+01:00

ऊपर दिए गए कोड से संबंधित कुछ बिंदु:

  1. Z आउटपुट में टाइमज़ोन डिज़ाइनर है शून्य-समय क्षेत्र ऑफसेट के लिए। यह ज़ुलु के लिए खड़ा है और Etc/UTC . को निर्दिष्ट करता है टाइमज़ोन (जिसमें टाइमज़ोन ऑफ़सेट +00:00 . है घंटे)।
  2. कोड कन्वर्ट करता है odt OffsetDateTime . के दो उदाहरणों में - प्रत्येक एक अलग तरीके से। पहला उदाहरण +02:00 . के एक निश्चित समय क्षेत्र ऑफसेट के साथ है घंटे जबकि दूसरा जेवीएम के टाइमज़ोन ऑफ़सेट के साथ है। ध्यान दें कि DST देखने वाले स्थान का टाइमज़ोन ऑफ़सेट गर्मी/सर्दियों के समय के अनुसार परिवर्तन। इसलिए, यदि कोई स्थान निश्चित टाइमज़ोन ऑफ़सेट का उपयोग करने के बजाय डीएसटी देखता है, उदा। +02:00 घंटे; हमें इसे एपीआई से प्राप्त करना चाहिए।
  3. मेरे JVM का टाइमज़ोन Europe/London है और वर्तमान में इसकी ऑफसेट +01:00 . है घंटे।

आधुनिक दिनांक-समय API से ट्रेल:दिनांक समय



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. समूहीकृत SQL परिणामों के प्रत्येक समूह के लिए अधिकतम मान वाले रिकॉर्ड प्राप्त करें

  2. उच्च उपलब्धता के लिए MySQL के लिए Percona सर्वर कैसे परिनियोजित करें

  3. MySQL - पिछली पंक्ति से मूल्य घटाना, समूह द्वारा

  4. SQL के साथ MySQL डेटाबेस में पहले या अंतिम कुछ वर्णों को निकालें या ट्रिम करें

  5. मैं एक .NET MySqlCommand में एक MySQL उपयोगकर्ता परिभाषित चर का उपयोग कैसे कर सकता हूं?