You really really really want it to be a String, don't you? sdf.format(startDate) returns a String. Then you call toString, which return the same String object. Then you create a new String with it, but it is equal to the earlier String.
So why not just use
but to convert it to again to date i used parse() and it returns me date if i print again it is printing in this format
Mon Mar 31 00:00:00 GMT+05:30 2008
That's because java.util.Date's toString method is called, and that prints the Date as you've shown. A Date object is little more than a timestamp with some methods around it. If you want to control its formatting when printing, that's exactly what DateFormat and its subclasses are there for. Well, that and parsing.
i need this yyyy/mm/dd format if i print or to insert into data base.
Either use a PreparedStatement as I've said before, or just use "enterdate" from the line I quoted before.