Convert Full Date as String to Date SQL Server - sql

I have a table with the column EPDATA, varchar(25) field in the format down below.
How do I convert this format to YYYY-MM-DD?
E.g 2020-12-16

You can simply use try_conver().
FYI: try_convert() will return a NULL if the conversion fails.
Example:
Select try_convert(date,'Jun 10 2016 12:00AM')
Returns
2016-06-10

Convert it to date datatype and format it like so:
SELECT FORMAT(CAST(EPDATE AS DATE) ,'yyyy-MM-dd')
FROM tablename

Use FORMAT
Select FORMAT(COLUMNNAME, 'YYYY-MM-dd')
Also,By CONVERT
SELECT CONVERT(varchar, COLUMNNAME, 23)

You can convert the way you want with this query.
CASE
WHEN SUBSTRING(#date,1,3)='Jan' THEN SUBSTRING(#date,8,11)+'-01-'+SUBSTRING(#date,5,6)
WHEN SUBSTRING(#date,1,3)='Feb' THEN SUBSTRING(#date,8,11)+'-02-'+SUBSTRING(#date,5,6)
WHEN SUBSTRING(#date,1,3)='Mar' THEN SUBSTRING(#date,8,11)+'-03-'+SUBSTRING(#date,5,6)
WHEN SUBSTRING(#date,1,3)='Apr' THEN SUBSTRING(#date,8,11)+'-04-'+SUBSTRING(#date,5,6)
WHEN SUBSTRING(#date,1,3)='May' THEN SUBSTRING(#date,8,11)+'-05-'+SUBSTRING(#date,5,6)
WHEN SUBSTRING(#date,1,3)='June'THEN SUBSTRING(#date,8,11)+'-06-'+SUBSTRING(#date,5,6)
WHEN SUBSTRING(#date,1,3)='July'THEN SUBSTRING(#date,8,11)+'-07-'+SUBSTRING(#date,5,6)
WHEN SUBSTRING(#date,1,3)='Aug' THEN SUBSTRING(#date,8,11)+'-08-'+SUBSTRING(#date,5,6)
WHEN SUBSTRING(#date,1,3)='Sep' THEN SUBSTRING(#date,8,11)+'-09-'+SUBSTRING(#date,5,6)
WHEN SUBSTRING(#date,1,3)='Oct' THEN SUBSTRING(#date,8,11)+'-10-'+SUBSTRING(#date,5,6)
WHEN SUBSTRING(#date,1,3)='Nov' THEN SUBSTRING(#date,8,11)+'-11-'+SUBSTRING(#date,5,6)
WHEN SUBSTRING(#date,1,3)='Dec' THEN SUBSTRING(#date,8,11)+'-12-'+SUBSTRING(#date,5,6)
END

Related

change the date format in sql server

I have a date value as below in my table.
2015-05-25
I want to convert the values as below.
05/25
How to do this? Date value is having date datatype.
Use the CONVERT function to change it to mm/dd/yy (style 1)
And the LEFT function to only select mm/dd (integer_expression 5)
SELECT LEFT(CONVERT(date, 1), 5)
FROM yourtable
Input:
2015-05-25
Output:
date
05/25
Try:
select convert(varchar(5),getdate(),101)
Give it format by using Tostring()
string date = YourDate.ToString("MM/dd");
Write as:
SELECT Left(CONVERT(VARCHAR(8), GETDATE(), 1),5) AS [MM/DD]
If you are using SQL Server 2012 (or more), I advise you using the new FORMAT function:
SELECT FORMAT(#date, 'MM/dd')

How to filter Time portion of a DateTime column

I want to retrive data from table according to a particular time so I use this query below.
select * from a
where convert(smalldatetime,date,datepart(hh,date)) ='09:12:00'
but I get no row as result. So what should I do for my expected result?
You can convert directly to varchar as below
SELECT * FROM a
WHERE CONVERT(VARCHAR(8), [date], 108) = '09:12:00'
Try this:
SELECT *
FROM a
WHERE CONVERT(VARCHAR(8), [DATE],108) = '09:12:00'
Your datatype is already smalldatetime so you have to convert to varchar and compare with string.
EDIT:
Answer explanation:
You have smalldatetime inside [DATE] column. For example 2015-10-01 09:12:00. To compare only time you need to convert to string which contains only time. For this reason you will use command CONVERT from TSQL.
It will convert smalldatetime to 8 characters string. As a result you will have 09:12:00 and then you compare it with your string.
In Sql server 2008 you can convert to TIME. By specifying TIME(0) you have the desired format:
SELECT *
FROM a
WHERE CAST(date as time(0)) ='09:12:00'
//CONVERT(data_type(length),expression,style)
SELECT * FROM a
WHERE CONVERT(varchar(8),[columnName],108) = '09:12:00'

Change SQL date format

I have a column with this format 20150228 and I need to change it to 02/28/2015. Is there any function in SQL to do it.
Thanks
You can use this assuming the date is stored as a varchar:
SELECT CONVERT(VARCHAR(50),CONVERT(DATE,'20150228',112),101)
It returns:
02/28/2015
Use FORMAT function:
SELECT CONVERT(NVARCHAR(10), GETDATE(), 101)

How to update/Change the date format to MM/dd/yyyy from dd/MM/yyyy format in sql server?

In my db DOB is saved in dd/mm/yyyy format. i want to change the DOB date format to MM/dd/yyyy. How can i do that?
First i want to know which datatype you are using for saving your date value. There is nothing provided with your code no sample code, table details nothing. anyway
i think your 'date of birth' field datatype is datetime,then you can use the following example
create table checktable(
ID int,
name nvarchar (30),
dob datetime);
Example data insert into the table
insert into checktable(ID,name,dob) values(10,'myname','03/01/2014');
//..........
select * from checktable
//Use CONVERT() it will give you the desired output
SELECT TOP 1 ID, dob,CONVERT(varchar,dob,101) 'mm/dd/yyyy'
FROM checktable
UPDATE
if your datatype is varchar and now it is in the format mm/dd/yyyy and you want to change it into dd/mm/yyyy format then use the following example it will help you
create table checktable1(
ID int,
name nvarchar (30),
dob varchar(20));
// insert sample data
insert into checktable1(ID,name,dob) values(10,'myname','21/05/2010');
select * from checktable1
// change the format using substring()
select * FROM checktable1
select dob,substring(dob,4,3)+substring(dob, 1, 3)+substring(dob, 7, 4) from checktable1
It will give you result in 05/21/2010 (mm/dd/yyyy)format
Microsoft SQL: https://msdn.microsoft.com/en-us/library/ms187928.aspx
Syntax for CONVERT:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
use example:
SELECT CONVERT(VARCHAR(10), GETDATE(), 101) AS [MM/DD/YYYY]
For other databases search Date and Time Functions in documentation.
The CONVERT() function is a general function that converts an expression of one data type to another.
The CONVERT() function can be used to display date/time data in different formats.
http://www.w3schools.com/sql/func_convert.asp
if your data type is DateTime then no need to convert it, in later you can convert its format as you want but if your are using varchar or nvarchar
then you can use CONVERT() as below
SELECT convert(datetime, '23/10/2016', 103)
Result : 2016-10-23 00:00:00.000
if just want to conver in date then
SELECT convert(date, '23/10/2016', 103)
Result : 2016-10-23
for more information and other formats
http://www.sqlusa.com/bestpractices/datetimeconversion/
and if you just want to convert string to sting then
SELECT CONVERT(varchar,'23/10/2016',101)
Result : 23/10/2016
This is the query to show all data in dd/mm/yyyy format.Type your column name that contains date in place of datecolumnname and your table name in place of tablename in below query:
select convert(varchar,datecolumname,103) as datecolumname from tablename

How to convert date and time in SQL Server

I have the following columns in a table:
Signed_In_Date Signed_Out_Time
11/1/2005 12:00:00 am 11/1/2005 10:27:00PM
I would like to convert them to the following output:
Signed_In_Date Signed_Out_Time
11/1/2005 10:27:00PM
Is there a function or conversion code in SQL Server that would do it?
Assuming that the columns you're referring to are DATETIME columns, I would use the code below:
Date Only
SELECT CONVERT(VARCHAR(10), GETDATE(), 101)
Time Only
SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), GETDATE(), 100), 7))
You can see the queries in action / play with them here.
For Sign_In_Date Use
select CONVERT(VARCHAR(10),'11/1/2005 10:27:00PM',108)
Ouput:
11/1/2005
For Sing_Out_Time
declare #time time
set #time=cast('11/1/2005 10:27:00PM' as Time)
select convert(varchar(10),#time,100)
Output:
10:27PM
try that :
select CONVERT(VARCHAR(10),Signed_Out_Time,108) ,-- 108 is d/M/yyyy if you want mm/dd/yyy you should use 101
CONVERT(VARCHAR(8),Signed_In_Date,103)
You can use CONVERT to change datetime format to your own desirable format:
SELECT CONVERT(VARCHAR(10),Signed_In_Date,101) as 'Signed_In_Date',
CONVERT(VARCHAR(10),Signed_Out_Time,108) as 'Signed_Out_Time';
For more date format, go over this link:
http://www.sql-server-helper.com/tips/date-formats.aspx