根据sql中的日期过滤数据

sho*_*ave 4 sql sql-server sql-server-2008 sql-date-functions sqldatetime

我试图执行以下SQL查询并根据日期过滤掉数据.

我需要显示一个过滤掉数据的表,只有那些在提到的start_date和end_date之间的行

这是我一直在尝试的查询

SELECT DISTINCT T1.column1, T1.column2, T2.START_DATE, T2.END_DATE
FROM Table1 T1, Table2 T2
WHERE (T1.column1= T2.column2) AND
(T2.START_DATE >= '15/01/2013 10:58:58' AND 
   T2.END_DATE <= '18/01/2013 10:58:58') ORDER BY T2.START_DATE DESC
Run Code Online (Sandbox Code Playgroud)

我也得到了2012年的价值结果.请帮帮我

谢谢

Kaf*_*Kaf 9

由于您没有提到任何错误,if START_DATEEND_DATEDATETIME数据类型,您的查询没有任何问题.如果您没有获得正确的记录,请检查数据.

但是你的date format may trouble you in a different server.您可以遵循一些良好做法来避免此类问题.

- 无论何时将日期用作字符串,请尝试以ISO或ISO8601 格式使用它(即'yyyymmdd''yyyy-mm-ddThh:mi:ss.mmm')

- 还要避免使用WHERE Table1,Table2连接表,这是旧的和过时的.JOIN表现更好,干净整洁.

您可以按如下方式更改查询;

SELECT DISTINCT T1.column1, T1.column2, T2.START_DATE, T2.END_DATE
FROM Table1 T1 JOIN Table2 T2 ON T1.column1 = T2.column2
WHERE (T2.START_DATE >= '20130115 10:58:58' AND 
       T2.END_DATE <= '20130118 10:58:58') 
ORDER BY T2.START_DATE DESC
Run Code Online (Sandbox Code Playgroud)