Unix Technical Forum

SEO

vBulletin Search Engine Optimization


Go Back   Unix Technical Forum > Database Server Software > Microsoft SQL Server > SQL Server

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 04-29-2008, 08:26 PM
shannonwhitty@hotmail.com
 
Posts: n/a
Default Select date in british format

I am able to extract dates in the correct format i.e.

SELECT CONVERT(VARCHAR(8), GETDATE(), 3)
=> dd/mm/yy

My issue is that my users are selecting a date in this format and I
need to select data based on this range.

i.e.

SELECT * FROM TABLE
WHERE date BETWEEN '01/11/2007' AND '30/11/2007'
=> The conversion of a char data type to a datetime data type resulted
in an out-of-range datetime value.
(Obviously expecting to see mm/dd/yyyy)

Next Try:
SELECT * FROM TABLE
WHERE CONVERT(VARCHAR(8), date, 3) BETWEEN '01/11/07' AND '30/11/07'
=> Returns rows outside of required range

What do I need to do to select all data in my table where the data
range is between 01/11/07 AND 30/11/07 in this format dd/mm/yy ???
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 04-29-2008, 08:26 PM
David Portas
 
Posts: n/a
Default Re: Select date in british format

<shannonwhitty@hotmail.com> wrote in message
news:ac0e8dad-edf6-4d28-99d5-9bd86950a050@r9g2000prd.googlegroups.com...
>I am able to extract dates in the correct format i.e.
>
> SELECT CONVERT(VARCHAR(8), GETDATE(), 3)
> => dd/mm/yy
>
> My issue is that my users are selecting a date in this format and I
> need to select data based on this range.
>
> i.e.
>
> SELECT * FROM TABLE
> WHERE date BETWEEN '01/11/2007' AND '30/11/2007'
> => The conversion of a char data type to a datetime data type resulted
> in an out-of-range datetime value.
> (Obviously expecting to see mm/dd/yyyy)
>
> Next Try:
> SELECT * FROM TABLE
> WHERE CONVERT(VARCHAR(8), date, 3) BETWEEN '01/11/07' AND '30/11/07'
> => Returns rows outside of required range
>
> What do I need to do to select all data in my table where the data
> range is between 01/11/07 AND 30/11/07 in this format dd/mm/yy ???



I assume these are DATETIMEs? DATETIMEs don't have any format in SQL Server.

After validating the users input, your client application should query the
database using DATETIME or SMALLDATETIME types (which don't have any
format).

Your queries therefore ought to look something like:

BETWEEN @dt1 AND @dt2

where @dt1 and @dt2 are DATETIME or SMALLDATETIME types.

In fact it is better to use >= and < rather than BETWEEN. DATETIME values
always contain both date and time elements. If you use BETWEEN then any
times after midnight on the last day of the period will be excluded.

--
David Portas







Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #3 (permalink)  
Old 05-02-2008, 05:04 AM
shannonwhitty@hotmail.com
 
Posts: n/a
Default Re: Select date in british format

Figured it out.

SELECT * FROM TABLE
WHERE date BETWEEN CONVERT(DATETIME, '01/11/2007' ,3) AND
CONVERT(DATETIME, '30/11/2007' ,3)


David Portas wrote:

> <shannonwhitty@hotmail.com> wrote in message
> news:ac0e8dad-edf6-4d28-99d5-9bd86950a050@r9g2000prd.googlegroups.com...
> >I am able to extract dates in the correct format i.e.
> >
> > SELECT CONVERT(VARCHAR(8), GETDATE(), 3)
> > => dd/mm/yy
> >
> > My issue is that my users are selecting a date in this format and I
> > need to select data based on this range.
> >
> > i.e.
> >
> > SELECT * FROM TABLE
> > WHERE date BETWEEN '01/11/2007' AND '30/11/2007'
> > => The conversion of a char data type to a datetime data type resulted
> > in an out-of-range datetime value.
> > (Obviously expecting to see mm/dd/yyyy)
> >
> > Next Try:
> > SELECT * FROM TABLE
> > WHERE CONVERT(VARCHAR(8), date, 3) BETWEEN '01/11/07' AND '30/11/07'
> > => Returns rows outside of required range
> >
> > What do I need to do to select all data in my table where the data
> > range is between 01/11/07 AND 30/11/07 in this format dd/mm/yy ???

>
>
> I assume these are DATETIMEs? DATETIMEs don't have any format in SQL Server.
>
> After validating the users input, your client application should query the
> database using DATETIME or SMALLDATETIME types (which don't have any
> format).
>
> Your queries therefore ought to look something like:
>
> BETWEEN @dt1 AND @dt2
>
> where @dt1 and @dt2 are DATETIME or SMALLDATETIME types.
>
> In fact it is better to use >= and < rather than BETWEEN. DATETIME values
> always contain both date and time elements. If you use BETWEEN then any
> times after midnight on the last day of the period will be excluded.
>
> --
> David Portas

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT. The time now is 05:02 AM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145