49

I have query:

SELECT name
FROM (
SELECT name FROM 
Hist_answer
WHERE id_city='34324' AND datetime >= DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH)
UNION ALL
SELECT name FROM 
Hist_internet
WHERE id_city='34324' AND datetime >= DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH)
) x
GROUP BY name ORDER BY name

But DATE_SUB is a MySQL function and I need function for MsSQL 2008

Tell me please how to select data from 30 days by using MsSQL 2008?

P.S.: Data type of datetime is smalldatetime

laalto
  • 150,114
  • 66
  • 286
  • 303
Alex N
  • 1,111
  • 4
  • 13
  • 20

4 Answers4

66

You should be using DATEADD is Sql server so if try this simple select you will see the affect

Select DATEADD(Month, -1, getdate())

Result

2013-04-20 14:08:07.177

in your case try this query

SELECT name
FROM (
SELECT name FROM 
Hist_answer
WHERE id_city='34324' AND datetime >= DATEADD(month,-1,GETDATE())
UNION ALL
SELECT name FROM 
Hist_internet
WHERE id_city='34324' AND datetime >= DATEADD(month,-1,GETDATE())
) x
GROUP BY name ORDER BY name
Raab
  • 34,778
  • 4
  • 50
  • 65
24

Try this : Using this you can select date by last 30 days,

SELECT DATEADD(DAY,-30,GETDATE())
Anvesh
  • 7,103
  • 3
  • 45
  • 43
14

For those who could not get DATEADD to work, try this instead: ( NOW( ) - INTERVAL 1 MONTH )

maikelsabido
  • 1,253
  • 4
  • 18
  • 37
0

Short version for easy use:

SELECT * 
FROM [TableName] t
WHERE t.[DateColumnName] >= DATEADD(month, -1, GETDATE())

DATEADD and GETDATE are available in SQL Server starting with 2008 version. MSDN documentation: GETDATE and DATEADD.

Jonatan Dragon
  • 4,675
  • 3
  • 30
  • 38