CASTing a date

D

DavidC

I have the following DECLARE that works fine but I need to handle times when
the day of a date is not = 1 and @Month passed is less than 10 so the date
gets '0x' for month or day. Below is my current CAST.

DECLARE @StartMoth date;
SET @StartMonth = CAST(CAST(@Year as char(4)) + CAST(@Month as char(2)) +
'01');


Thanks.
 
M

Mike

Hi David,

I think it would be easier if you had one parameter of datetime. A datetime
(or date) could be converted directly to the format that you want with
convert.

With a single date(time) parameter you could do the following
--- this just to make as if I had a parameter of datetime
declare @myParameter datetime
set @myParameter = getdate()
--- end code for make as if I had a parameter
select convert(varchar, @d, 112) MyDate

the response is
MyDate
--------
20100902

In this example I build a date from integers and then cast it with convert
to get the format that you want. Note that I used varchars instead of chars
as you did.

declare @MyDay int = 5
declare @MyMonth int = 9
declare @MyYear int = 10
declare @MyDateStr varchar(10)
declare @MyDate datetime
set @MydateStr = cast(@MyYear as varchar(4)) + '/' + CAST(@MyMonth as
varchar(2)) + '/' + CAST(@MyDay as varchar(2))
set @MyDate = CONVERT(datetime, @MydateStr, 11)
select convert(varchar, @MyDate, 112) MyDate

Mike
http://www.homemadepride.com
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,048
Latest member
verona

Latest Threads

Top