Java Timestamp to MySQL Timestamp - java

I have this code, but it is not working. I have Error message:
"com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '' for column 'Datum_zalozeni' at row 1"
pstmt = conn.prepareStatement(INSERT);
Timestamp ts = u.getDatum_zalozeni();
System.out.println(ts);
pstmt.setTimestamp(1, ts);
pstmt.setInt(2, u.getId_klient());
pstmt.executeUpdate();
My database is:
CREATE TABLE Ucet
(
Id_Uctu Int NOT NULL auto_increment primary key,
Datum_zalozeni Timestamp NOT NULL,
Id_klient Int NOT NULL
)
;
Where is mistake? I think code is correct.

I have a code to generate the System Timestamp. It sets 0 in place of 979. Have a look.
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class TimestampTest
{
public static void main(String[] args)
{
try
{
System.out.println("System Date: " + generateTimestamp("yyyy-MM-dd HH:mm:ss"));
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static Timestamp generateTimestamp(String format)
{
Timestamp timestamp = null;
try
{
SimpleDateFormat dateFormat = new SimpleDateFormat(format);
Date date = dateFormat.parse(generateDate(format));
timestamp = new Timestamp(date.getTime());
}
catch (ParseException e)
{
e.printStackTrace();
}
return timestamp;
}
public static String generateDate(String format)
{
Date date = Calendar.getInstance().getTime();
DateFormat dateFormat = new SimpleDateFormat(format);
return (dateFormat.format(date));
}
}

MySQL usually accepts Timestamps in the format '2013-12-06 14:24:34'. It would be helpful if you share what is the exact value you are trying to insert into the database.
Timestamp ts = u.getDatum_zalozeni();
System.out.println(ts);
pstmt.setTimestamp(1, ts);
What is ts?

Related

Get first element of ResultTable[] in java

These codes:
String genType = FileConstants.CHANGE_CYCLE;
ResultTable[] genericCode = RTManager.getRTCsmGenericCodesDecodeList(genType);
String genCode = Arrays.toString(genericCode);
Returns these values:
genCode = [[code=22:00:00]
[dCode=Cut-off time for change bill_cycle if existing cycle_close_date=activity_date]]
Question: how do i get only '22:00:00' and convert it as Time datatype?
If the item in the ResultTable array has a toString() and it produces string then you can get it like this.
genericCode[0].toString().split("=")[1]
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateExample {
public static void main(String[] args) {
String time = "22:00:00";
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
Date date;
try {
date = sdf.parse(time);
System.out.println("Time: " + sdf.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
}
}

Converting String object to Date object

Hi i am truing to convert this string 2015-11-26 to Date object so:
I am trying this:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
Date result=null;
try {
result = df.parse(date);
} catch (ParseException ex) {
Logger.getLogger(XmlReaderDemo.class.getName()).log(Level.SEVERE, null, ex);
}
codecurrency.setDate(result);
And date is the string holding 2015-11-26
It gives me exception and I don't know why.
Your code is working fine:
import java.text.SimpleDateFormat;
import java.text.DateFormat;
import java.util.*;
import java.text.ParseException;
public class DateExample {
public static void main (String args[]) {
String date = "2015-11-26";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
Date result = null;
try {
result = df.parse(date);
} catch (ParseException ex) {
ex.printStackTrace();
}
System.out.println("result: " + result);
}
}
I just changed it a bit, so it compiles.
If you still can't get it to work, please post a Runnable example so we can provide more and better help.
This is the output I get:
result: Thu Nov 26 00:00:00 CST 2015
Also looking at the exception and your code, you probably want to move this line:
codecurrency.setDate(result);
inside the try call...

Convert String to Timestamp Java

So I am having this issue that I can't wrap my head around. I've read similar questions posed but very case I've found there is an issue with the format, and my format is correct.
Basically I am trying to convert a String into a Timestamp, and I get the unparseable date error.
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Hello {
public static Timestamp convertStringToTimestamp(String str_date) {
try {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS");
Date date = formatter.parse(str_date);
java.sql.Timestamp timeStampDate = new Timestamp(date.getTime());
return timeStampDate;
} catch (ParseException e) {
System.out.println("Exception :" + e);
return null;
}
}
public static void main(String[] args) {
Timestamp ts = convertStringToTimestamp("2015-06-09 11:51:12,708");
Timestamp ts2 = convertStringToTimestamp("2015-04-17 11:29:49.564");
System.out.println(ts +" | "+ts2);
}
}
Output:
Exception :java.text.ParseException: Unparseable date: "2015-06-09 11:51:12,708"
Exception :java.text.ParseException: Unparseable date: "2015-04-17 11:29:49.564"
null | null
Any ideas?
This works perfectly to me.
I just passed the right pattern as an input as well.
public static Timestamp convertStringToTimestamp(String str_date, String pattern) {
try {
SimpleDateFormat formatter = new SimpleDateFormat(pattern);
Date date = formatter.parse(str_date);
java.sql.Timestamp timeStampDate = new Timestamp(date.getTime());
return timeStampDate;
} catch (ParseException e) {
System.out.println("Exception :" + e);
return null;
}
}
public static void main(String[] args) {
Timestamp ts = convertStringToTimestamp("2015-06-09 11:51:12,708", "yyyy-MM-dd HH:mm:ss,SSS");
Timestamp ts2 = convertStringToTimestamp("2015-04-17 11:29:49.564", "yyyy-MM-dd HH:mm:ss.SSS");
System.out.println(ts +" | "+ts2);
}
The output is:
2015-06-09 11:51:12.708 | 2015-04-17 11:29:49.564
"2015-06-09 11:51:12,708" is working for me but "2015-04-17 11:29:49.564" won't. You specified the regex for "," so "." would not. It is perfectly normal.
you need to fix the comma
Timestamp ts2 = convertStringToTimestamp("2015-04-17 11:29:49.564");
**Update**
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SomeClass {
public static void main(String[] args) {
System.out.println(convertStringToTimestamp("2015-06-09 11:51:12,708"));
//be consistent here with , and .
System.out.println(convertStringToTimestamp("2015-04-17 11:29:49.564"));
System.out.println();
}
private static Timestamp convertStringToTimestamp(String something) {
SimpleDateFormat dateFormat = null;
if(something.contains(".")) {
dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
}
if(something.contains(",")) {
dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss,SSS");
}
Timestamp timestamp = null;
Date parsedDate;
try {
parsedDate = dateFormat.parse(something);
timestamp = new java.sql.Timestamp(parsedDate.getTime());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return timestamp;
}
}

How to convert one formatted date String to another format

I have a JDateChooser bean panel named basDate. When i execute System.out.println(basDate.getText()); it returns 12.02.2014 But i must convert and edit it to 2014-02-12 00:00:00.000
Just i want edit and assign new output to a variable coming as "12.02.2014" value as "2014-02-12 00:00:00.000"
I use Netbeans Gui Builder.
Since the input date is a string in a different format from what you want, you need to two SimpleDateFormats. One to parse the String to a Date and another to format the Date to a different format.
Test this out. input 12.02.2014 output 2014-12-02 00:00:00:000
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
public class MyDateFormat {
public static void main(String[] args){
String inputStringDate = "12.02.2014";
SimpleDateFormat inputFormat = new SimpleDateFormat("dd.MM.yyyy");
Date inputDate = null;
try {
inputDate = inputFormat.parse(inputStringDate);
} catch (ParseException ex) {
Logger.getLogger(MyDateFormat.class.getName()).log(Level.SEVERE, null, ex);
}
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-dd-MM HH:mm:ss:SSS");
String outputStringDate = outputFormat.format(inputDate);
System.out.println(outputStringDate);
}
}

Can't import data from excel file

I am getting an error( Unparseable date: "18–11–2003") when i try to import data from excel file. the date from the file cannot be parsed
if(row.getCell(16)!=null){
String dobb=null;
Date dob=null;
row.getCell(16).setCellType(row.getCell(16).CELL_TYPE_STRING);
dobb=row.getCell(16).getStringCellValue();
System.out.println(dobb);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy");
try {
dob = (Date)simpleDateFormat.parse(dobb);//error..... Unparseable date: "18–11–2003"
System.out.println("dateeee"+dob);
} catch (ParseException e) {
e.printStackTrace();
//dob=new Date();
}
It looks like the specified "18–11–2003" date contains u2013 Unicode character instead of a normal dash which is u002d.
Here is a sample that uses the string copy-pasted from the question:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDate {
public static void main(String[] args) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy");
try {
String trouble = "18–11–2003";
String goodOne = "18-11-2003";
Date date = simpleDateFormat.parse(goodOne);
//Date date = simpleDateFormat.parse(trouble);
System.out.println(String.format ("\\u%04x", (int)trouble.charAt(2)));
System.out.println(String.format ("\\u%04x", (int)goodOne.charAt(2)));
} catch (ParseException e) {
e.printStackTrace();
}
}
}
The character in the actual date (–) is not the same character in your date format (-).
This code:
public static void main(String[] args) {
System.out.println((int)'–');
System.out.println((int)'-');
}
produces this result:
8211
45
There are several things you can do:
Do a replace() on your date string (dateStr = dateStr.replace("–", "-");) to replace the strange hyphen with an actual ASCII hyphen. *Recommended*
Change your dateformat from "dd–MM–yyyy" to "dd–MM–yyyy"

Categories