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年的价值结果.请帮帮我
谢谢
由于您没有提到任何错误,if START_DATE
和END_DATE
是DATETIME
数据类型,您的查询没有任何问题.如果您没有获得正确的记录,请检查数据.
但是你的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)
归档时间: |
|
查看次数: |
68753 次 |
最近记录: |