Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Set DateTime format

I have the following code -

DateTime timeStamp;

timeStamp = System.Convert.ToDateTime(y.InnerText);

Where y.InnerText is 11/03/2013 11:35:24.

However this is breaking my import statement as it the database is looking for the format -

2013-03-11 11:35:24

How can I set the format of the DateTime object?

like image 438
Ebikeneser Avatar asked Mar 14 '13 11:03

Ebikeneser


People also ask

What is DateTime format C#?

C# DateTime Format Date and Time in C# are handled by DateTime class in C# that provides properties and methods to format dates in different datetime formats. This article blog explains how to work with date and time format in C#. The following table describes various C# DateTime formats and their results.

What is the default format of DateTime?

uses a default date format to store and manipulate strings that represent dates. To specify the default date format, enter a date format in the DateTime Format String attribute in the data viewer configuration. By default, the date format is MM/DD/YYYY HH24:MI:SS.US.

What is SQL DateTime format?

SQL Server comes with the following data types for storing a date or a date/time value in the database: DATE - format YYYY-MM-DD. DATETIME - format: YYYY-MM-DD HH:MI:SS. SMALLDATETIME - format: YYYY-MM-DD HH:MI:SS. TIMESTAMP - format: a unique number.


1 Answers

How can I set the format of the DateTime object?

You can't. DateTime values don't have formats, any more than int or double values do. When you want to convert them to/from strings, that's where you specify any formatting information.

Instead, you should use parameterized SQL and avoid converting the DateTime value back into a string in the first place. This is a general best practice - don't include values in your SQL string; parameterized SQL has multiple benefits:

  • It avoids SQL injection attacks
  • It avoids conversion issues like this one
  • It keeps your code (SQL) separate from your data (parameter values)

I would also suggest that instead of using Convert.ToDateTime, you specify your expected format when parsing. For example:

timeStamp = DateTime.ParseExact(y.InnerText,
                                "dd/MM/yyyy HH:mm:ss",
                                CultureInfo.InvariantCulture);

Basically, the two rules I try to apply are:

  • Avoid performing any conversions where you don't have to. If you make sure that every system uses the right data types as far as possible, you often don't need to make any conversions at all.
  • Where you do need to convert to/from string representations, be very explicit about the representation you want to consume/produce. For machine-readable values, that should usually use the invariant culture and possibly a custom date/time format. For human-readable values, that should usually use the user's culture and a standard date/time format.
like image 117
Jon Skeet Avatar answered Sep 27 '22 21:09

Jon Skeet