Convert DateTime Format using Convert function in SQL Server - sql

Can anyone help me to find out below format using Convert function in SQL Server?
DateTime
yyyy/MM/dd hhmm
yyyy/MM/dd hhmmssstt
Time
hh:mm
hh:mm:ss tt
hh:mm tt
Thanks in advance...

This MSDN page here lists all available "styles" for conversion.
If you're using SQL Server 2012 or newer, you can also look at the new FORMAT function for even more flexibility

Try this:
SQL provides different methods to convert date and time.
SELECT CONVERT(VARCHAR(19),GETDATE())
SELECT CONVERT(VARCHAR(10),GETDATE(),10)
SELECT CONVERT(VARCHAR(10),GETDATE(),110)
SELECT CONVERT(VARCHAR(11),GETDATE(),6)
SELECT CONVERT(VARCHAR(11),GETDATE(),106)
SELECT CONVERT(VARCHAR(24),GETDATE(),113)

Try these statements:
SELECT REPLACE(REPLACE(SUBSTRING(CONVERT(VARCHAR(50), GETDATE(), 121), 1, 16), ':', ''), '-', '/')
SELECT REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(50), GETDATE(), 121), ':', ''), '-', '/'), '.', '')
SELECT SUBSTRING(CONVERT(VARCHAR(50), GETDATE(), 114), 1, 5)
SELECT STUFF(SUBSTRING(CONVERT(VARCHAR(50), GETDATE(), 114), 1, 11), 9, 1, ' ')
SELECT STUFF(SUBSTRING(CONVERT(VARCHAR(50), GETDATE(), 114), 1, 11), 6, 4, ' ')
for these results:
2015/07/13 1357
2015/07/13 135723767
13:57
13:57:23 76
13:57 76

I am unable to get exact format which i need with Convert() so i am using Format() now.
Also want to say Format() is poor performance compare to Convert().

Related

How do I convert text to datetime in SQL Server?

I want to convert text to datetime in SQL Server.
I have text which in the format dd/mm/yyyy, but I want to convert this text format to datetime yyyymmdd.
I am using this method.
Convert(varchar(8), Right(text, 4) + Substring(text, 4, 2) + Left(text, 2), 112)
BUT I need a simpler query.
Answer:
SELECT FORMAT(CONVERT(date, '30/01/2018', 103), 'yyyyMMdd')
Explanation:
So this one is a little trickier because you've got DD/MM/YYYY, so you need to CONVERT first:
SELECT CONVERT(date, '30/01/2018', 103)
Result: 2018-01-30
Then if you are using SQL Server 2012+ use FORMAT()
SELECT FORMAT(CONVERT(date, '30/01/2018', 103), 'yyyyMMdd')
Result: 20180130

Date formatting in MS SQL

I have to change one date to MON/YYYY format. How can I achieve this in SQL Server?
Using Replace, Right, and Convert you can get the results you want:
SELECT REPLACE(RIGHT(CONVERT(char(11), GETDATE(), 106), 8), ' ', '/')
Results:
Jul/2016
To show Datename/Year
select left(datename(dw,getdate()),3)+'/'+format(getdate(),'yyyy')
Result: Thu/2016
To show monthname/year
select left(datename(month,getdate()),3)+'/'+format(getdate(),'yyyy')
Result: Jul/2016
Format works from SQL Server 2012 and Datename works from SQL Server 2008
Using Concat Function
SELECT CONCAT (
LEFT(Datename(WEEKDAY, Getdate()), 3)
,'/'
,YEAR(GETDATE())
)

How to Convert nvarchar (including time) into datetime

I have data 20160526094432, and I want to convert into datetime in SQLServer
The result will be 2016-05-26 09:44:32
Is there simple way to do that ?
Thanks
If you use MS SQL Server 2012 or newer then you can enjoy format function.
select cast(format(20160526094432,'####-##-## ##:##:##') as datetime) [date-time]
If your long number is a string then you have to convert it.
declare #d varchar(20)='20160526094432'
select cast(format(cast(#d as bigint),'####-##-## ##:##:##') as datetime) [date-time]
Hmmm. I don't think there is a really clean way, but something like this should work:
select (convert(datetime, left(col, 8) as datetime) +
convert(datetime, convert(time,
stuff(stuff(right(col, 6), 5, 0, ':'), 3, 0, ':')
)
)
)
Maybe you can try in this way, for example Date is the column of your table, 103 is the format of Date you want to convert, google for more details.
CONVERT(datetime, Date, 103)

How to get time part from GetDate() As hh:mm tt in SQL Server

this is not duplicate of How to get time part from SQL Server 2005 datetime in 'HH:mm tt' format
be cause all answers of that question returns 12:06PM (without space and need space)
I am trying to get only time part from SQL GETDATE()
and I am trying
SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), GETDATE(), 100), 7))
but it is returning
12:06PM
I need 12:06 PM (Space before AM or PM)..
search a lot but failed...
For SQL 2012 above:
SELECT FORMAT(GETDATE(), 'h:mm tt', 'en-US')
Try this
SELECT Replace(Replace(LTRIM(RIGHT(CONVERT(VARCHAR(20), GETDATE(), 100), 7)),'PM',' PM'),'AM',' AM')
You can use:
select CONVERT(VARCHAR(5), GETDATE(), 108) + ' ' +
RIGHT(CONVERT(VARCHAR(30), GETDATE(), 9),2)
SQL fiddle: http://sqlfiddle.com/#!6/a7540/2377
Try this:
SELECT substring(CONVERT(varchar(20), GetDate(), 9), 13, 5) +
' ' +
substring(CONVERT(varchar(30), GetDate(), 9), 25, 2)
After A lot Practice Shortest Answer I Get..
SELECT CONVERT(VARCHAR(11),
STUFF(RIGHT(
CONVERT(VARCHAR,GETDATE(),100 ) ,7),
6, 0, ' '))
Thanks All
FORMAT(GETDATE(), 'h:mm tt', 'en-US')

Convert SQL DateTime format

How can I display a DATETIME value (2010-12-02 15:20:17.000) as 02/12-2010 15:20?
For SQL Server:
select stuff(convert(varchar, getdate(), 105), 3, 1, '/') + ' ' + left(convert(varchar, getdate(), 8), 5)
DateTime is a DateTime is a DateTime - it just holds a date and time and doesn't have any string representation, really.
See the CAST and CONVERT topic in the SQL Server Books Online for details - it shows all supported date formats that SQL Server supports.
For your source format (2010-12-02 15:20:17.000) you could probably use style no. 121
DECLARE #source VARCHAR(50)
SET #source = '2010-12-02 15:20:17.000'
DECLARE #Date DATETIME
SELECT #Date = CONVERT(DATETIME, #source, 121)
SELECT #Date
but your target format is a bit odd..... I don't see any "out of the box" style that would match your needs. You'll need to use some string manipulation code to get that exact format.
Use MSSQL's build-in function to convert datetime to string with format,
SELECT CONVERT(VARCHAR(8), GETDATE(), 1) AS [MM/DD/YY] --2/5/12
SELECT CONVERT(VARCHAR(10), GETDATE(), 103) AS [DD/MM/YYYY] --5/2/2012
You need to create custom function to get various format to use like this;
SELECT dbo.ufn_FormatDateTime(GETDATE(),'YYYY-MM-DD HH:mm:SS tt')
--Output : 2012-02-05 01:58:38 AM
SELECT dbo.ufn_FormatDateTime(GETDATE(),'(dddd) mmmm dd, yyyy hh:mm:ss.fff tt')
--Output : (Sunday) February 05, 2012 01:58:38.723 AM
SELECT dbo.ufn_FormatDateTime(GETDATE(),'dd/MM/yyyy')
--Output : 05/02/2012
SELECT dbo.ufn_FormatDateTime(GETDATE(),'yyyy MMM, dd (ddd) hh:mm:ss tt')
-- Output : 2012 Feb, 05 (Sun) 01:58:38 AM
Get the code snippet from this link.
http://www.tainyan.com/codesnippets/entry-62/sql-server-date-time-format-function.html
http://msdn.microsoft.com/en-us/library/ms189491.aspx
Is this what you're looking for?
Assuming Oracle:
select TO_CHAR(SYSDATE, "dd/mm-yyyy HH24:mi")
from DUAL;
Assuming SQL Server:
select STR(DATEPART(DAY, GETDATE()), 2)
+ '/'
+ STR(DATEPART(MONTH, GETDATE()), 2)
+ '-'
+ STR(DATEPART(YEAR, GETDATE()), 4)
+ ' '
+ STR(DATEPART(HOUR, GETDATE()), 2)
+ ':'
+ STR(DATEPART(MINUTE, GETDATE()), 2);
Little example I use for Germany and Switzerland: dd.mm.yyyy hh:mm
SELECT CONVERT(varchar, GETDATE(), 104) + ' ' + LEFT(CONVERT(varchar, GETDATE(), 108), 5)