Ian
Ian

Reputation: 900

SQL SERVER DATETIME FORMAT

Studying SQL Server there is something I am not sure of:

A datetime field with the value: 2012-02-26 09:34:00.000

If I select out of the table using:

CAST(dob2 AS VARCHAR(12) ) AS d1

It formats it as: Feb 26 2012

What I am unsure of his how or why SQL Server formats DateTime like that. If you use datetime2 it does not - anyone know why?

Upvotes: 15

Views: 229727

Answers (7)

Mahesh P
Mahesh P

Reputation: 1

to change the date format by using sql syntax you should use this query

SELECT DATE_FORMAT(`<columnName>`, '%d/%m/%Y') FROM schemaname.tablename;

ex:-

for suppose i have a schema named as bugloo and the table name is tbl_company and in this tbl_company i have a column all are in the date format %yy/%mm/%dd and column name is createdDate and the query should like this

SELECT DATE_FORMAT(`createdDate`, '%d/%m/%Y') FROM bugloo.tbl_company;

after running this query my output date would be converted to %dd/%mm/%yyyy

Upvotes: 0

Hank Freeman
Hank Freeman

Reputation: 1212

This is my favorite use of 112 and 114

select (convert(varchar, getdate(), 112)+ replace(convert(varchar, getdate(), 114),':','')) as 'Getdate() 

112 + 114 or YYYYMMDDHHMMSSMSS'

Result:

Getdate() 112 + 114 or YYYYMMDDHHMMSSMSS

20171016083349100

Upvotes: 0

jai
jai

Reputation: 11

case when isdate(inputdate) = 1 
then convert(datetime, cast(inputdate,datetime2), 103)
else
case when isdate(inputdate) = 0 
then convert(datetime, cast(inputdate,datetime2), 103)

Upvotes: 0

ch2o
ch2o

Reputation: 839

In MS SQL Server you can do:

SET DATEFORMAT ymd

Upvotes: 1

Kaf
Kaf

Reputation: 33809

Compatibility Supports Says that Under compatibility level 110, the default style for CAST and CONVERT operations on time and datetime2 data types is always 121. If your query relies on the old behavior, use a compatibility level less than 110, or explicitly specify the 0 style in the affected query.

That means by default datetime2 is CAST as varchar to 121 format. For ex; col1 and col2 formats (below) are same (other than the 0s at the end)

SELECT CONVERT(varchar, GETDATE(), 121) col1,
       CAST(convert(datetime2,GETDATE()) as varchar) col2,
       CAST(GETDATE() as varchar) col3

SQL FIDDLE DEMO

--Results
COL1                    | COL2                          | COL3
2013-02-08 09:53:56.223 | 2013-02-08 09:53:56.2230000   | Feb 8 2013 9:53AM

FYI, if you use CONVERT instead of CAST you can use a third parameter to specify certain formats as listed here on MSDN

Upvotes: 5

Andomar
Andomar

Reputation: 238048

The default date format depends on the language setting for the database server. You can also change it per session, like:

set language french
select cast(getdate() as varchar(50))
-->
févr 8 2013 9:45AM

Upvotes: 7

SQLGuru
SQLGuru

Reputation: 1099

try this:

select convert(varchar, dob2, 101)
select convert(varchar, dob2, 102)
select convert(varchar, dob2, 103)
select convert(varchar, dob2, 104)
select convert(varchar, dob2, 105)
select convert(varchar, dob2, 106)
select convert(varchar, dob2, 107)
select convert(varchar, dob2, 108)
select convert(varchar, dob2, 109)
select convert(varchar, dob2, 110)
select convert(varchar, dob2, 111)
select convert(varchar, dob2, 112)
select convert(varchar, dob2, 113)

refernces: http://msdn.microsoft.com/en-us/library/ms187928.aspx

http://www.w3schools.com/sql/func_convert.asp

Upvotes: 7

Related Questions