Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Check Month year if exists

Posted on 2015-02-11
5
Medium Priority
?
127 Views
Last Modified: 2015-02-17
I have a column called Recevieddate (datetime). I have a string '2/1/2015'. I want to check if month and year exists in Recevieddate when I pass @mydate. Date does not matter.


Sample date

2015-02-01 00:00:00.000
2015-02-06 00:00:00.000
2015-03-05 00:00:00.000
2015-04-15 00:00:00.000



declare @mydate varchar(12)
set@mydate = '2/1/2015'
declare @tf    char(1)


if exists(select *from table1 where receiveddate = @mydate ???)
  begin
    set @tf = 'True'
  end
  else
  begin
    set @tf = 'false
  end


Sample
2/1/2015 should return true because month year exists in Recevieddate
2/15/2015 should return true
0
Comment
Question by:VBdotnet2005
5 Comments
 
LVL 66

Accepted Solution

by:
Jim Horn earned 500 total points
ID: 40604054
What's the purpose of setting @mydate to a varchar, when it contains a date value?
Also, you have @tf char(1), but 'True' and 'False' are more than one character.
Declare @mydate date = '2015-02-01', @tf varchar(10)

IF EXISTS (SELECT receiveddate FROM Table1 WHERE MONTH(receiveddate) = MONTH(@mydate) AND YEAR(receiveddate) = YEAR(@mydate))
   SET @tf = 'True'
ELSE
   SET @tf = 'False'

Open in new window

0
 
LVL 34

Assisted Solution

by:Mike Eghtebas
Mike Eghtebas earned 500 total points
ID: 40604065
if exists (SELECT [receiveddate] FROM Table1 WHERE COALESCE([receiveddate], '19000101') = COALESCE(@mydate, '19000101'))

First part deals with null dates (is not received, has no date yet:

Is null:            returns '19000101'
Is not null:     returns '2/6/2015'   ' for example

The second part deals with the date you supply:

Is null:            returns '19000101'   'highly unlikely
Is not null:     returns '2/10/2015'   ' for example

Now, if they match, record still shows (date exists).
0
 
LVL 35

Assisted Solution

by:David Todd
David Todd earned 500 total points
ID: 40604093
Declare @mydate date = '2015-02-01', @tf varchar(10)

IF EXISTS (SELECT 1FROM Table1 WHERE dateadd( month, datediff( month, receiveddate, 0 ), 0 ) = @mydate
   SET @tf = 'True'
ELSE
   SET @tf = 'False'

Open in new window

0
 
LVL 11

Assisted Solution

by:John_Vidmar
John_Vidmar earned 500 total points
ID: 40604527
If you have a high-volume table then you do not want to wrap a table-field in a function, you'd lose the ability to use an index (if one existed on that table-field). Instead, the following solution truncates the date-variable to the first-of-the-month (greater than or equal to), and first-of-the-next-month (less than):
IF EXISTS
(	SELECT	*
	FROM	table1
	WHERE	receiveddate >= REPLACE(STR(MONTH(@mydate)) + '/01/' + STR(YEAR(@mydate)), ' ','')
	AND	receiveddate <  DATEADD(mm,1,REPLACE(STR(MONTH(@mydate)) + '/01/' + STR(YEAR(@mydate)), ' ',''))
)
	BEGIN
		SET @tf = 'True'
	END
ELSE
	BEGIN
		SET @tf = 'False'
	END

Open in new window

0
 
LVL 52

Expert Comment

by:Vitor Montalvão
ID: 40613702
vbdotnet2005, do you still need help with this question?
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this article I will describe the Detach & Attach method as one possible migration process and I will add the extra tasks needed for an upgrade when and where is applied so it will cover all.
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Are you ready to place your question in front of subject-matter experts for more timely responses? With the release of Priority Question, Premium Members, Team Accounts and Qualified Experts can now identify the emergent level of their issue, signal…
Please read the paragraph below before following the instructions in the video — there are important caveats in the paragraph that I did not mention in the video. If your PaperPort 12 or PaperPort 14 is failing to start, or crashing, or hanging, …

972 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question