2012-06-12 42 views
1

我在我们的数据仓库2012的Oracle与SQL Server:日期转换与格式

一段代码从Oracle移植到SQL Server的过程就是我每天使用一百次在甲骨文正在改变通过使用类似的查询日期格式:以上

To_Char(entry_date,'WMMYY') = 30612 

让我抢的日期(默认格式= DD-MON-YY01-JAN-12)和更改指定一周的格式(六月的第三个星期在上面例如)只需列出所需的一周。

在我看来,上述内容非常简单易用。我可以将其更改为我想要的任何格式(MMYY,MMYYYY)等,而不会有任何问题。到目前为止,我无法想出在SQL Server 2012中执行此操作的简单方法,它真的开始困扰我了。它在SQL Server中是datetime2

我在寻找CAST(), CONVERT(), DATEPART()的东西,但是从我所看到的那里,有各种各样的古怪的编码和数字代码(像101,102,我不明白为什么是这样),这只是看起来无关紧要而已对我来说很复杂。

我刚才找不到我在找什么,或者这只是它与SQL Server的方式吗?我只想做一些简单的事情,比如抓取6月份或10月份的第二周输入的所有数据,而不必添加200个额外的代码字符。

+1

从Oracle迁移到SQL Server是一个巨大的倒退当涉及到日期处理(和其他许多事情)。据我所知,你需要为这个 –

回答

0

这是一个开关。您正在使用SQL Server 2012,因此请查看FORMAT()函数。 http://technet.microsoft.com/en-us/library/hh213505%28SQL.110%29.aspx我不是,所以很不幸,我无法为您测试任何东西 - 但有一些日期格式的改进。 对于我们这些没有 - 的人来说,一旦你习惯了他们,你可以做的事情会很棒。这不是特定于SQL Server的 - 但是每个月的每周不同,因此您必须将其定义为在每个月的第三周获得一个很好的示例等。此外,在使用DATEPART以及周或日参数,返回的内容取决于一周中第一天的设置(1 -7 - @@DATEFIRST)。 CONVERT的数字样式(如果您在2012年,请再次查看FORMAT())绝对不是那么直观 - 但您可能会一遍又一遍地使用相同的样式,并且您会很快记住它们。如果您在'WMMYY'上设置或者只是反复使用某些内置的解决方案并不令人满意,请创建UDF。这是六月份期间进入了

数据

DATEPART(mm,@date) = 6 

当月

month(getDate()) 

或者本周

DATEPART(ww,GetDate()) 
+0

编写自己的函数感谢评论家伙。我没有意识到SQL Server和Oracle在日期处理方面差距很大。这似乎是这样的常识,我确信有成千上万的人使用SQL服务器来完成我所需要的。看起来这只是一个调整。我会看看FORMAT()。再次感谢。 – user1452180