To convert a datetime to a date, you can use the CONVERT() , TRY_CONVERT() , or CAST() function.
try this below
DateTime myDateTime = DateTime.Now;
string sqlFormattedDate = myDateTime.ToString("yyyy-MM-dd HH:mm:ss.fff");
Using the standard datetime format "s" will also ensure internationalization compatibility (MM/dd versus dd/MM):
myDateTime.ToString("s");
=> 2013-12-31T00:00:00
Complete Options: (code: sample result)
d: 6/15/2008
D: Sunday, June 15, 2008
f: Sunday, June 15, 2008 9:15 PM
F: Sunday, June 15, 2008 9:15:07 PM
g: 6/15/2008 9:15 PM
G: 6/15/2008 9:15:07 PM
m: June 15
o: 2008-06-15T21:15:07.0000000
R: Sun, 15 Jun 2008 21:15:07 GMT
s: 2008-06-15T21:15:07
t: 9:15 PM
T: 9:15:07 PM
u: 2008-06-15 21:15:07Z
U: Monday, June 16, 2008 4:15:07 AM
y: June, 2008
'h:mm:ss.ff t': 9:15:07.00 P
'd MMM yyyy': 15 Jun 2008
'HH:mm:ss.f': 21:15:07.0
'dd MMM HH:mm:ss': 15 Jun 21:15:07
'\Mon\t\h\: M': Month: 6
'HH:mm:ss.ffffzzz': 21:15:07.0000-07:00
Supported in .NET Framework: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0
Reference: DateTime.ToString
Method
The correct answer was already given "use parameters". Formatting a date and passing it as a string to SQL-Server can lead to errors as it depends on the settings how the date is interpreted on the server side. In europe, we write '1.12.2012' to indicate december 1st 2012, whereas in other countries this might be treated as january 12th.
When issuing statements directly in SSMS I use the format yyyymmdd
which seem to be quite general. I did not encounter any problems on the various installations I worked on so far.
There is another seldom used format, which is a bit weird but works for all versions:
select { d '2013-10-01' }
will return the first of october 2013.
select { ts '2013-10-01 13:45:01' }
will return october 1st, 1:45:01 PM
I strongly advice to use parameters and never format your own SQL code by pasting together homegrown formatted statement fragments. It is an entry for SQL injection and strange errors (formatting a float value is another potential issue)
Your problem is in the "Date" property that truncates DateTime
to date only.
You could put the conversion like this:
DateTime myDateTime = DateTime.Now;
string sqlFormattedDate = myDateTime.ToString("yyyy-MM-dd HH:mm:ss"); // <- No Date.ToString()!
Let's use the built in SqlDateTime class
new SqlDateTime(DateTime.Now).ToSqlString()
But still need to check for null values. This will throw overflow exception
new SqlDateTime(DateTime.MinValue).ToSqlString()
SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With