SQL替换select中的特定日期

时间:2015-06-16 15:25:45

标签: mysql sql

长时间阅读,但第一次发布海报,对于创建帖子时的任何错误表示歉意。

我正在尝试根据产品的可用时间和销售情况计算出产品的销售率。

SELECT productname, datediff(day, MIN(DateAdded), getdate())/ nullif(SalesToDate,0) as [Days For A Sale]
FROM  TABLE

非常简单但是有效,问题是一些旧产品在数据库中错误地将日期添加为1970年(例如1970-02-02 09:21:00.000)。

有没有办法替换包括1970年的选择中的所有DateAdded例如?某种“如果1970年然后是2012年的情况”,但是选择并且不影响其他日期。

我只是想要这个查询,我无法更新数据库中的日期而不会影响很多。在此先感谢,任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:0)

如果您想在选择中执行此操作,并明确将1970替换为2012,那么DATEADD可能会帮助您:

SELECT 
   productname, 
   DATEADD(YEAR, 42, datediff(day, MIN(DateAdded),getdate())/nullif(SalesToDate,0)) as [Days For A Sale] 
   FROM TABLE

答案 1 :(得分:0)

您可以在聚合函数中使用Case作为



SELECT 
   productname, 
   DATEADD(YEAR, 42, datediff(day, MIN(case when year(DateAdded) = '1970'
				then  dateadd(YY,CEILING(datediff(YY,DateAdded,'1/1/2012')),DateAdded)
				else a  end ),getdate())/nullif(SalesToDate,0)) as [Days For A Sale] 
   FROM TABLE




使用Celling来围绕始终最大值,因为我们正在与' 1/1/201' 谢谢

答案 2 :(得分:-1)

希望这会奏效:

SELECT CONVERT(DATE,REPLACE(DATEADDED,YEAR(CONVERT(DATE,DATEADDED)),' 2012'))FROM TABLE其中YEAR(CONVERT(DATE,DATEADDED))=' 1970& #39;