1

我正在将我们的数据仓库从 Oracle 迁移到 SQL Server 2012。

我在 Oracle 中每天使用一百次的一段代码正在更改查询的日期格式,方法是:

To_Char(entry_date,'WMMYY') = 30612 

以上允许我通过简单地列出所需的星期来获取日期(默认格式 = DD-MON-YYeg 01-JAN-12)并更改指定周的格式(上例中为六月的第三周)。

在我看来,以上内容非常简单易用。我可以将其更改为我想要的任何格式(MMYY、MMYYYY)等,没有任何问题。到目前为止,我无法在 SQL Server 2012 中找到一种简单的方法来做到这一点,这真的开始困扰我。它datetime2在 SQL Server 中。

我正在寻找东西,CAST(), CONVERT(), DATEPART()但据我所见,需要各种古怪的编码和数字代码(如 101、102,我不明白为什么会这样),这对我来说似乎无关紧要而且过于复杂。

我只是没有找到我正在寻找的东西,还是这只是 SQL Server 的方式?我只想能够做一些简单的事情,比如抓取在 6 月或 10 月第二周输入的所有数据,而无需添加 200 个额外字符的代码。

4

1 回答 1

0

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

在 6 月份输入的数据

   DATEPART(mm,@date) = 6

这个月

  month(getDate())

或者这周

  DATEPART(ww,GetDate())
于 2012-06-13T01:34:59.780 回答