小编典典

在SQL中根据日期过滤数据

sql

我试图执行以下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

我也从2012年获得了具有价值的结果。请帮帮我

谢谢


阅读 379

收藏
2021-04-28

共1个答案

小编典典

由于您没有提及任何错误(如果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
2021-04-28