Guest User

Untitled

a guest
Jan 18th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. DECLARE @b DATE, @e DATE, @cmd NVARCHAR(MAX)
  2. SET @b = '2012-07-01'
  3. SET @e = '2014-01-25'
  4.  
  5.  
  6. SET @cmd = 'DELETE FROM DateTable
  7. WHERE ValueDate BETWEEN ' + CONVERT(VARCHAR,@b,121) + ' AND ' + CONVERT(VARCHAR,@E,121)
  8.  
  9. EXEC sp_executesql @cmd
  10.  
  11. -- Only the WHERE clause changed:
  12. WHERE ValueDate BETWEEN CAST(' + CONVERT(VARCHAR,@b,121) + ' AS DATE) AND CAST(' + CONVERT(VARCHAR,@E,121) + ' AS DATE)'
  13.  
  14. PRINT @cmd;
  15.  
  16. WHERE ValueDate BETWEEN ' + CONVERT(VARCHAR,@b,121) + ' AND ' + CONVERT(VARCHAR,@E,121)
  17.  
  18. WHERE ValueDate BETWEEN 2012-07-01 AND 2014-01-25
  19.  
  20. WHERE ValueDate BETWEEN 2004 AND 1988
  21.  
  22. SET @cmd = 'DELETE FROM dbo.DateTable -- always use SCHEMA prefix
  23. WHERE ValueDate BETWEEN @b AND @e;';
  24.  
  25. EXEC sp_executesql @cmd, N'@b DATE, @e DATE', @b, @e;
  26.  
  27. WHERE ValueDate >= @b AND ValueDate < DATEADD(DAY, 1, @e);
  28.  
  29. DECLARE @b DATE = '2012-07-01', @e DATE = '2014-01-25',
  30. @sql NVARCHAR(MAX) = N'';
  31.  
  32. SELECT @sql += N'
  33. DELETE ' + QUOTENAME(s.name)
  34. + '.' + QUOTENAME(t.name) + '
  35. WHERE ' + QUOTENAME(c.name) + ' >= @b
  36. AND ' + QUOTENAME(c.name) + ' < DATEADD(DAY, 1, @e);'
  37. FROM sys.tables AS t
  38. INNER JOIN sys.schemas AS s
  39. ON t.[schema_id] = s.[schema_id]
  40. INNER JOIN sys.columns AS c
  41. ON t.[object_id] = c.[object_id]
  42. WHERE c.system_type_id IN (40,42,43,58,61);
  43. -- or just = 40 if you're only interested in DATE columns
  44.  
  45. PRINT @sql;
  46. -- EXEC sp_executesql @sql, N'@b DATE, @e DATE', @b, @e;
Add Comment
Please, Sign In to add comment