কীভাবে জাভা তারিখটি মাইএসকিএল থেকে জেপিএর সাথে ডেটটাইম সংরক্ষণ করবেন


104

কোনও সংস্থা কী আমাকে বলতে পারে আমি কীভাবে জাভা তারিখটি মাইএসকিএল তারিখের সময়টিতে সঞ্চয় করতে পারি ...?

যখন আমি এটি করার চেষ্টা করছি ... কেবলমাত্র তারিখ সঞ্চিত থাকে এবং সময়টি মাইএসকিএল তারিখের দোকানে 00:00:00 এর মত থাকে ...

2009-09-22 00:00:00

আমি শুধু তারিখই চাই না, সময়ও চাই ... পছন্দ করি

2009-09-22 08:08:11

আমি স্প্রিং মাইডোমেন ক্লাসগুলির সাথে জেপিএ (হাইবারনেট) ব্যবহার করছি java.util.Date ব্যবহার করে তবে আমি হাতে লেখা প্রশ্নগুলি ব্যবহার করে সারণী তৈরি করেছি ...

এটি আমার তৈরি বিবৃতি

CREATE TABLE ContactUs (id BIGINT auto_increment, 
                        userName VARCHAR(30), 
                        email VARCHAR(50), 
                        subject VARCHAR(100), 
                        message VARCHAR(1024), 
                        messageType VARCHAR(15), 
                        contactUsTime datetime, 
                        primary key(id))
                        TYPE=InnoDB;

আপনার কোড টুকরা, সম্ভবত?
বোঝো


1
এই দিনগুলিতে আপনার আর ব্যবহার java.util.Dateকরা উচিত নয় (২০১০ সালে সম্ভবত এর চেয়ে ভাল বিকল্প ছিল না)। আধুনিক ক্লাসগুলি ব্যবহার করা ভাল, যেমন java.time.Instantবা java.time.LocalDateTimeআপনার সঞ্চয় করা তারিখের সঠিক প্রয়োজনের উপর নির্ভর করে।
ওলে ভিভি

এই কয়েকটি পুরানো উত্তর গুগল র‌্যাঙ্কিংয়ে বেশ উচ্চতর আসে। জাভা 8+ এ আমরা ডেটটাইম ফর্ম্যাটে সংরক্ষণের জন্য @ টেম্পোরাল ব্যবহারের পরিবর্তে ডেটটাইম বাঁচাতে লোকালডেটটাইম ব্যবহার করতে পারি
হোপকিং

রেডিস্টেটমেন্ট.সেটটাইমস্ট্যাম্প (1, নতুন টাইমস্ট্যাম্প (সিস্টেম.কন্ট্রেন্টটাইমমিলিস ()));
রজত

উত্তর:


165

লিঙ্কে দেখুন:

http://www.coderanch.com/t/304851/JDBC/java/Java-date-MySQL-date-conversion

নিম্নলিখিত কোডটি কেবল সমস্যার সমাধান করেছে:

java.util.Date dt = new java.util.Date();

java.text.SimpleDateFormat sdf = 
     new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String currentTime = sdf.format(dt);

এই ' কারেন্টটাইম ' কলামটিতে typeোকানো হয়েছিল যার টাইপটি ছিল ডেটটাইম এবং এটি সফল হয়েছিল।


4
তবে, কারেন্টটাইম একটি স্ট্রিং অবজেক্ট এবং ডিবিতে আমরা ডেটটাইপ হিসাবে ডেটটাইম গ্রহণ করি, আমার মনে হয় এটি itোকানো যাচ্ছে না? ঠিক?
রেডি

yyyy-MM-dd HH:mm:ssঅনেক গুরুত্তপুন্ন. মূলধনের নোট নিন।
বিনিয়াম

91

আপনার ক্ষেত্রটি (বা গেটার) এর সাথে এনিটেট করুন @Temporal(TemporalType.TIMESTAMP):

public class MyEntity {
    ...
    @Temporal(TemporalType.TIMESTAMP)
    private java.util.Date myDate;
    ...
}

কৌতুক করা উচিত।


2
আসলেই এই উত্তর!
পার্নিল

2
এই জন্য, এটি সঠিক উত্তর।
রায়ান

3
সচেতন হন যে আপনি যদি এই সমাধানটি চয়ন করেন তবে আপনার তারিখটি ডিবির কাছ থেকে আনার সময় টাইমস্ট্যাম্প হিসাবে উপস্থিত হবে। এটা চমৎকার বিন্যাস 'YYYY-MM-DD ....') থাকবে না
জন

37

আপনি সম্ভবত ব্যবহার করছেন java.sql.Date? যদিও এটিতে জাভা ক্লাস হিসাবে মিলিসেকেন্ড গ্রানুলারিটি রয়েছে (এটি একটি java.util.Dateখারাপ নকশার সিদ্ধান্তের একটি সাবক্লাস ), এটি কোনও সময় উপাদান ছাড়াই জেডিবিসি ড্রাইভার দ্বারা তারিখ হিসাবে ব্যাখ্যা করা হবে। java.sql.Timestampপরিবর্তে আপনাকে ব্যবহার করতে হবে।


1
আমি java.sql.Dateবা java.sql.Timestampডোমেন ক্লাসে ব্যবহার করব না তবে আমার ধারণা এটি ওপি সম্পাদনার আগে লেখা হয়েছিল।
পাস্কাল থিভেন্ট

আমি করতাম java.util.Date অবজেক্টগুলি সম্পূর্ণ অনুমানযোগ্য ফলাফলের সাথে java.sql. টাইমস্ট্যাম্প অবজেক্টের সাথে তুলনা করে না।
ডগ ম্যাসক্রপ

8

সম্ভবত আপনার জাভা তারিখের mysql format( YYYY-MM-DD HH:MM:SS) থেকে আলাদা ফর্ম্যাট রয়েছে বলে

এটা কর

 DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
 Date date = new Date();
 System.out.println(dateFormat.format(date));

আপনি রেফারেন্সটিতে সঠিক ফর্ম্যাটটি উল্লেখ করেছেন এবং তারপরে কোডটিতে ভুল ফর্ম্যাটটি ব্যবহার করেছেন।
মেরিক হাফস্টুটলার

6

আপনি 2011-07-18 + সময় ফর্ম্যাট পাবেন

long timeNow = Calendar.getInstance().getTimeInMillis();
java.sql.Timestamp ts = new java.sql.Timestamp(timeNow);
...
preparedStatement.setTimestamp(TIME_COL_INDEX, ts);

5

mysql ডেটটাইম -> গ্রেগরিয়ানক্যালেন্ডার

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = format.parse("2012-12-13 14:54:30"); // mysql datetime format
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(date);
System.out.println(calendar.getTime());

গ্রেগরিয়ানক্যালেন্ডার -> মাইএসকিএল তারিখের সময়

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String string = format.format(calendar.getTime());
System.out.println(string);

4
java.util.Date date = new Date();
Object param = new java.sql.Timestamp(date.getTime());    
preparedStatement.setObject(param);

1

মাইএসকিউএলে তারিখটি সন্নিবেশ করতে নিম্নলিখিত কোডটি ব্যবহার করুন। মাইএসকিউএলের প্রয়োজনীয়তা পূরণের জন্য আমাদের তারিখের ফর্ম্যাট পরিবর্তন করার পরিবর্তে, আমরা STR_TO_DATE(?, '%l:%i %p')প্যারামিটারগুলি সেট করে ডেটা বেসকে আমাদের তারিখটি সনাক্ত করতে সহায়তা করতে পারি ।

উদাহরণস্বরূপ, 2014-03-12 হিসাবে প্রতিনিধিত্ব করা যেতে পারে STR_TO_DATE('2014-03-12', '%Y-%m-%d')

preparedStatement = connect.prepareStatement("INSERT INTO test.msft VALUES (default, STR_TO_DATE( ?, '%m/%d/%Y'), STR_TO_DATE(?, '%l:%i %p'),?,?,?,?,?)"); 

1

এটি খুব সহজ যদিও এই উত্তরের শর্তগুলি মাইএসকিএলে কলামের ডেটাটাইপটি তারিখের সময় এবং আপনি জাভা কোড থেকে মাইএসকিএলে ডেটা প্রেরণ করতে চান:

java.util.Date dt = new java.util.Date ();
whatever your code object may be.setDateTime (DT);

গুরুত্বপূর্ণ জিনিসটি কেবল তারিখটি বেছে নেওয়ার জন্য এবং এর ফর্ম্যাটটি ইতিমধ্যে মাইএসকিএল ফর্ম্যাট অনুসারে রয়েছে এবং এটি প্রেরণ করে, আর কোনও পরিবর্তন করার প্রয়োজন নেই।


0

আসলে আপনি সিম্পলডেটফর্ম্যাট ব্যবহার করতে পারবেন না, আপনি এরকম কিছু ব্যবহার করতে পারেন;

  @JsonSerialize(using=JsonDateSerializer.class)
  @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy HH:mm:ss")
  private Date blkDate;

এইভাবে আপনি নির্দিষ্ট হিসাবে ফর্ম্যাট সহ তারিখটি পেতে পারেন।


0

আমি এখনও এক লাইনে পদ্ধতি পছন্দ

new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime())

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