Split date and time

I would like to be able to split a date field ActualDateTime to show date in one field and time in another field.

Field name is ActualDateTime
Table name is Travel

the date field will be Travel_Date
the time field will be Travel_Time . note that time would not be 24 hours.
Eddy2010Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Jim HornMicrosoft SQL Server Developer, Architect, and AuthorCommented:
-- To create the columns
ALTER TABLE Travel
ADD Travel_Date date, Travel_Time time
GO

-- To populate them based on your requirements
UPDATE Travel
SET Travel_Date = CAST(ActualDateTime as date), 
   Travel_Time = CAST(ActualDateTime as time) 
GO

Open in new window

0
Eddy2010Author Commented:
Thank you, this is a query only. I dont want to change the table structure. I want the output like that.
0
Eddy2010Author Commented:
I am not an administrator. I just want the query result to return the value.
0
The Ultimate Tool Kit for Technolgy Solution Provi

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy for valuable how-to assets including sample agreements, checklists, flowcharts, and more!

Jim HornMicrosoft SQL Server Developer, Architect, and AuthorCommented:
>I want the output like that.
In that case it's a SELECT query, which is below plus whatever you want to add to it.

SELECT 
   CAST(ActualDateTime as date) as Travel_Date, 
   CAST(ActualDateTime as time) as Travel_Time 
FROM Travel 

Open in new window

0
Eddy2010Author Commented:
thank you, but got the following error

Msg 243, Level 16, State 1, Line 3
Type date is not a defined system type.
Msg 243, Level 16, State 1, Line 3
Type time is not a defined system type.
0
Jim HornMicrosoft SQL Server Developer, Architect, and AuthorCommented:
What version of SQL Server are you running?  
SQL 2005 only had the datetime data type, which is both date and time.
SQL 2008 introduced separate date and time data types.
0
Eddy2010Author Commented:
2005
0
Eddy2010Author Commented:
sorry
2008 R2
0
Jim HornMicrosoft SQL Server Developer, Architect, and AuthorCommented:
Assuming 2005, your only option here is to convert the date to a varchar, and then parse the string.  

The below works on my 2012 box, as I don't have 2005 handy.
Any date-specific server settings may affect the result.

CREATE TABLE Travel (ActualDateTime datetime) 
INSERT INTO Travel (ActualDateTime) 
VALUES ('2014-03-22 10:38:43.283'), ('2014-03-11 12:34:56.789'), ('2013-07-30 20:38:43.283') 

SELECT 
   convert(varchar, ActualDateTime ,5) as Travel_Date, 
   convert(varchar, ActualDateTime ,8) as Travel_Time 
FROM Travel

Open in new window


For more info on date styles, see SQL expert PortletPaul's article on SQL Server Date Styles (formats) using CONVERT()
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Anthony PerkinsCommented:
sorry
2008 R2

Since date and time are supported in SQL Server 2008, then perhaps that means your database is set to a compatibility level of 90 (SQL Server 2005)
0
Scott PletcherSenior DBACommented:
CONVERT is the standard method of formatting a datetime for output.  In this specific case:


SELECT
    CONVERT(varchar(10), t.ActualDateTime, 101) AS Travel_Date,
    RIGHT(CONVERT(varchar(30), t.ActualDateTime, 0), 7) AS Travel_Time
FROM Travel t
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft SQL Server

From novice to tech pro — start learning today.