Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8072091
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 5, 20262026-06-05T13:54:23+00:00 2026-06-05T13:54:23+00:00

Using SQL Server 2000 Table1 Id date — ———- 001 23/01/2012 002 25/01/2012 003

  • 0

Using SQL Server 2000

Table1

Id    date 
---   ----------
001   23/01/2012
002   25/01/2012
003 
004   01/02/2012

From table1, I want to display id and date is null or date is equal to current month..

Condition

  • For example current month is 02/2012 means, I want to display the id 003 and 004, because 003 date is null, 004 date is equal to current month date…

  • if current month is 03/2012, 004 date should not display

How to do this in SQL Server?

Expected Output

Id     date 
003 
004    01/02/2012
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-05T13:54:25+00:00Added an answer on June 5, 2026 at 1:54 pm

    It’s important to make your query sargable so that an index on your date column can be used. Thus a where clause that is of the form function(date) (where function is year, month or datepart) is bad since SQL Server can’t use an index on date.

    Instead you want to frame your query so that it’s of the form

    select *
    from table1
    where (date is null) or (date between [STARTOFMONTH] and [ENDOFMONTH])
    

    DateTime columns have, as their name implies, a TIME component. So between is tricky since you want right up until midnight on the end of the month, but not quite midnight leading in to the following month… Some people try to hack around this by subtracting 3 milliseconds from the end of the month. That’s bad and not future proof.

    It’s better to make your query look like

    select *
    from table1
    where (date is null) or ( (date >= [STARTOFMONTH] and date < [STARTOFNEXTMONTH]) )
    

    How to get those values (and be SQL 2000 compatible…)?
    One way, off the top of my head, is

    cast(  floor( cast(dateAdd(d, -1 * day(getDate()) + 1, getDate()) as float ) ) as datetime )
    

    and the start of the following month is obtained by adding one month to that. This gets the current date, subtracts the number of days elapsed in the current month and then adds 1. We then have a date/time equal to the first day of the month but still with a time component. A cast to float, floor and then cast back to datetime fixes that.

    This could be put into a scalar or inline-table UDF, but in the interest of brevity (long answer already!), your where clause is

    select *
    from table1
    where 
    (date is null)
    OR
    (
      ( date >= cast(  floor( cast(dateAdd(d, -1 * day(getDate()) + 1, getDate()) as float ) ) as datetime ) )
      AND
      ( date < dateAdd(d, 1, cast(  floor( cast(dateAdd(d, -1 * day(getDate()) + 1, getDate()) as float ) ) as datetime ) ) )
    )
    

    Hope that helps!

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Using SQL Server 2000 Table1 ID date value 001 23/01/2012 100 002 25/02/2012 200
Using SQL Server 2000 Table PersonID Date 001 11-02-2009 002 11-02-2009 003 11-02-2009 001
I am using SQL Server 2000 Table1 ID Date 001 23/02/2009 001 24/02/2009 002
Using SQL Server 2000 Table1 ID Date Value1 Value2 001 01/01/2012 100 0 001
Using SQL Server 2000 I want to compare the table2.date between table1.from, table1.todate, if
Using Sql Server 2000 Table1 id sdate edate 001 05/01/2012 25/02/2012 002 19/02/2012 17/04/2012
Using SQL Server 2000 table 1: ID LastDate 001 20090101 003 20090501 004 20090302
Using SQL Server 2000 and VB6 Table1 ID Date 001 20090801 001 20090802 …
Using SQL Server 2000 Database1.Table1 ID Name Date title 001 Ravi 23-02-2009 Accountant 001
Using SQL Server 2000 Having Two Tables Table1 Date ID 20090101 001 20090102 001

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.