2012-07-31 137 views
74

我无法找到解决方案,该解决方案给出了带有时间戳的上个月的第一天和最后一天。希望这有助于他人。如果已经有解决这个问题的方法,我表示歉意。如何在SQL Server中获取前一个月的第一天和最后一天(带时间戳)

以下是解决方案。

SELECT DATEADD(month, DATEDIFF(month, -1, getdate()) - 2, 0) as FirtDayPreviousMonthWithTimeStamp, 
    DATEADD(ss, -1, DATEADD(month, DATEDIFF(month, 0, getdate()), 0)) as LastDayPreviousMonthWithTimeStamp 

这将返回如果currentdate = '2012-7-31'

结果如下:2012-06-01 00:00:00.000 2012-06-30 23:59:59.000

这将返回以下如果currentdate = '2012-1-1'

结果:2011-12-01 00:00:00.000 2011-12-31 23:59:59.000

+0

这是问题还是答案? – 2012-07-31 15:39:46

+0

欢迎使用StackOverflow:如果您发布代码,XML或数据样本,**请**在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮(“{}”)语法突出它! – 2012-07-31 15:40:05

+11

获得一天的最后一秒毫无用处。如果你想在一个月内获得所有数据,那么> =第1天和下个月的第1天更有用。 – 2012-07-31 15:46:56

回答

146
select DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0) --First day of previous month 
select DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -1) --Last Day of previous month 
+2

如果我在'DATEDIFF'中使用'-1',它会抛出和错误'下面函数的参数无效:DATEDIFF' – Thiru 2013-12-26 07:27:41

+3

其工作正常。我测试了它 – AnandPhadke 2013-12-27 05:59:47

+1

@Thiru并非所有的SQL软件都允许在DATEDIFF()函数中使用3个参数。我知道SQL Server,但我不确定MySQL是否。 – daOnlyBG 2017-05-22 15:14:52

82

第一天本周。

select CONVERT(varchar,dateadd(week,datediff(week,0,getdate()),0),106) 

本周最后一天。

select CONVERT(varchar,dateadd(week,datediff(week,0,getdate()),6),106) 

上周的第一天。

select CONVERT(varchar,DATEADD(week,datediff(week,7,getdate()),0),106) 

上周末日。

select CONVERT(varchar,dateadd(week,datediff(week,7,getdate()),6),106) 

下周的第一天。

select CONVERT(varchar,dateadd(week,datediff(week,0,getdate()),7),106) 

下周的最后一天。

select CONVERT(varchar,dateadd(week,datediff(week,0,getdate()),13),106) 

本月第一天。

select CONVERT(varchar,dateadd(d,-(day(getdate()-1)),getdate()),106) 

本月的最后一天。

select CONVERT(varchar,dateadd(d,-(day(dateadd(m,1,getdate()))),dateadd(m,1,getdate())),106) 

在这个例子中,只有工作日期是31.而其余日子不是。

上个月的第一天。

select CONVERT(varchar,dateadd(d,-(day(dateadd(m,-1,getdate()-2))),dateadd(m,-1,getdate()-1)),106) 

上个月的最后一天。

select CONVERT(varchar,dateadd(d,-(day(getdate())),getdate()),106) 

下个月的第一天。

select CONVERT(varchar,dateadd(d,-(day(dateadd(m,1,getdate()-1))),dateadd(m,1,getdate())),106) 

下个月的最后一天。

select CONVERT(varchar,dateadd(d,-(day(dateadd(m,2,getdate()))),DATEADD(m,2,getdate())),106) 

当年的第一天。

select CONVERT(varchar,dateadd(year,datediff(year,0,getdate()),0),106) 

当年的最后一天。

select CONVERT(varchar,dateadd(ms,-2,dateadd(year,0,dateadd(year,datediff(year,0,getdate())+1,0))),106) 

去年的第一天。

select CONVERT(varchar,dateadd(year,datediff(year,0,getdate())-1,0),106) 

去年的最后一天。

select CONVERT(varchar,dateadd(ms,-2,dateadd(year,0,dateadd(year,datediff(year,0,getdate()),0))),106) 

明年的第一天。

select CONVERT(varchar,dateadd(YEAR,DATEDIFF(year,0,getdate())+1,0),106) 

明年的最后一天。

select CONVERT(varchar,dateadd(ms,-2,dateadd(year,0,dateadd(year,datediff(year,0,getdate())+2,0))),106) 
+4

STYANARA,很多很好的函数,谢谢。当你说“在这个例子中只有31日有作品,剩下的日子不是”时,你的意思是什么。不知道我明白你指的是哪一个。 – 2014-01-30 01:11:31

+1

我正在努力解决这个问题。这句话没有意义。 – kenjara 2014-05-14 09:07:32

+0

很好的解释。 – Ajay2707 2015-10-17 08:41:44

0

我已经使用以下逻辑在SSRS报道。

BUS_DATE = 17-09-2013 

X=DATEADD(MONTH,-1,BUS_DATE) = 17-08-2013 

Y=DAY(BUS_DATE)=17 

first_date = DATEADD(DAY,-Y+1,X)=01-08-2013 

last_date = DATEADD(DAY,-Y,BUS_DATE)=31-08-2013 
3
SELECT DATEADD(m,DATEDIFF(m,0,GETDATE())-1,0) AS PreviousMonthStart 

SELECT DATEADD(ms,-2,DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)) AS PreviousMonthEnd 
-1

你可以通过执行

--select dateadd(dd,-datepart(dd,getdate())+1,dateadd(mm,-1,getdate())) --first day of previous month 
--select dateadd(dd,-datepart(dd,getdate()),getdate()) -- last day of previous month** 
0

采取一些基本的日期是某月的31日获得例如在SQL Server 比上月(带时间戳)的第一天和最后一天'20011231'。然后按照以下程序使用
(以下给出了3个相同的示例,只有@dt值不同)。

declare @dt datetime; 

set @dt = '20140312' 

SELECT DATEADD(month, DATEDIFF(month, '20011231', @dt), '20011231'); 



set @dt = '20140208' 

SELECT DATEADD(month, DATEDIFF(month, '20011231', @dt), '20011231'); 



set @dt = '20140405' 

SELECT DATEADD(month, DATEDIFF(month, '20011231', @dt), '20011231'); 
12
SELECT CONVERT(DATE,DATEADD(MM, DATEDIFF(MM, 0, GETDATE())-1, 0)) AS FirstDayOfPrevMonth 
SELECT CONVERT(DATE,DATEADD(MS, -3, DATEADD(MM, DATEDIFF(MM, 0, GETDATE()) , 0))) AS LastDayOfPrevMonth 

更多细节click here

1

从SQL2012,有推出了新的功能叫EOMONTH。使用此功能可轻松找到月份的第一天和最后一天。

select DATEADD(DD,1,EOMONTH(Getdate(),-1)) firstdayofmonth, EOMONTH(Getdate()) lastdayofmonth 
+0

这适用于当前月份,但OP需要上个月的第一天和最后一天,可以通过选择DATEADD(DD,1,EOMONTH(Getdate() ,-2))firstdayoflastmonth,EOMONTH(Getdate(),-1)lastdayoflastmonth – Scotty 2016-05-02 01:43:13

0

这是一个相当直接和动态的方式。在上个月的最后一天,从今天的日期减去当前的数字日。对于最后一个月的第一天,使用相同的代码,只是重复现有结果中减去数字每天添加1

declare @PriorEOM as datetime 
declare @PriorFOM as datetime 

Set @PriorEOM = dateadd(day,-day(getdate()),getdate()) 

Set @PriorFOM = dateadd(day,-day(@PriorEOM) + 1,@PriorEOM) 

Print @PriorEOM 
Print @PriorFOM 
0

我从来没见过这种解决方案还提出;这是我偏爱它的简单可读性:

select dateadd(month,-1,format(getutcdate(),'yyyy-MM-01'))

5

解决方案

您请求被称为ODBC格式(码)的日期格式。

要实际计算您请求的值,请在SQL中包含以下内容。

复制,粘贴......

DECLARE 
    @FirstDayOfLastMonth DATETIME = CONVERT(DATE, DATEADD(d, -(DAY(DATEADD(m, -1, GETDATE() - 2))), DATEADD(m, -1, GETDATE() - 1))) 
    , @LastDayOfLastMonth DATETIME = CONVERT(DATE, DATEADD(d, -(DAY(GETDATE())), GETDATE())) 

...并且在代码中使用:

  • @FirstDayOfLastMonth
  • @LastDayOfLastMonth

要知道,它必须早于引用参数的任何陈述粘贴,而是从那你可以在你的代码中参考@FirstDayOfLastMonth@LastDayOfLastMonth

让我们看看在动作一些代码:

DECLARE 
    @FirstDayOfLastMonth DATETIME = CONVERT(DATE, DATEADD(d, -(DAY(DATEADD(m, -1, GETDATE() - 2))), DATEADD(m, -1, GETDATE() - 1))) 
    , @LastDayOfLastMonth DATETIME = CONVERT(DATE, DATEADD(d, -(DAY(GETDATE())), GETDATE())) 

SELECT 
    'First day of last month' AS Title, CONVERT(VARCHAR, @FirstDayOfLastMonth , 120) AS [ODBC] 
UNION 

SELECT 
    'Last day of last month' AS Title, CONVERT(VARCHAR, @LastDayOfLastMonth , 120) AS [ODBC] 

运行上面的代码以产生以下输出:

Figure a

注意:请记住,今天的日期对我来说是2016年9月12日

更多(为了完整性)

常见的日期参数

你留下想要更多?

要设置方便的日期相关的参数的更全面的,包括在你的SQL如下:

DECLARE 
    @FirstDayOfCurrentWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 0)) 
    , @LastDayOfCurrentWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 6)) 
    , @FirstDayOfLastWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 7, GETDATE()), 0)) 
    , @LastDayOfLastWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 7, GETDATE()), 6)) 
    , @FirstDayOfNextWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 7)) 
    , @LastDayOfNextWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 13)) 
    , @FirstDayOfCurrentMonth DATETIME = CONVERT(DATE, DATEADD(d, -(DAY(GETDATE() - 1)), GETDATE())) 
    , @LastDayOfCurrentMonth DATETIME = CONVERT(DATE, DATEADD(d, -(DAY(DATEADD(m, 1, GETDATE()))), DATEADD(m, 1, GETDATE()))) 
    , @FirstDayOfLastMonth DATETIME = CONVERT(DATE, DATEADD(d, -(DAY(DATEADD(m, -1, GETDATE() - 2))), DATEADD(m, -1, GETDATE() - 1))) 
    , @LastDayOfLastMonth DATETIME = CONVERT(DATE, DATEADD(d, -(DAY(GETDATE())), GETDATE())) 
    , @FirstDayOfNextMonth DATETIME = CONVERT(DATE, DATEADD(d, -(DAY(DATEADD(m, 1, GETDATE() - 1))), DATEADD(m, 1, GETDATE()))) 
    , @LastDayOfNextMonth DATETIME = CONVERT(DATE, DATEADD(d, -(DAY(DATEADD(m, 2, GETDATE()))), DATEADD(m, 2, GETDATE()))) 
    , @FirstDayOfCurrentYear DATETIME = CONVERT(DATE, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)) 
    , @LastDayOfCurrentYear DATETIME = CONVERT(DATE, DATEADD(ms, -2, DATEADD(YEAR, 0, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, 0)))) 
    , @FirstDayOfLastYear DATETIME = CONVERT(DATE, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) - 1, 0)) 
    , @LastDayOfLastYear DATETIME = CONVERT(DATE, DATEADD(ms, -2, DATEADD(YEAR, 0, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)))) 
    , @FirstDayOfNextYear DATETIME = CONVERT(DATE, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, 0)) 
    , @LastDayOfNextYear DATETIME = CONVERT(DATE, DATEADD(ms, -2, DATEADD(YEAR, 0, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 2, 0)))) 

它将使最有意义的,包括它早些时候,最好在你的程序的顶部或SQL查询。

声明之后,参数可以在您的代码中的任意位置引用,只要您需要它们的次数。

让我们在行动中看到一些代码:

DECLARE 
    @FirstDayOfCurrentWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 0)) 
    , @LastDayOfCurrentWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 6)) 
    , @FirstDayOfLastWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 7, GETDATE()), 0)) 
    , @LastDayOfLastWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 7, GETDATE()), 6)) 
    , @FirstDayOfNextWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 7)) 
    , @LastDayOfNextWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 13)) 
    , @FirstDayOfCurrentMonth DATETIME = CONVERT(DATE, DATEADD(d, -(DAY(GETDATE() - 1)), GETDATE())) 
    , @LastDayOfCurrentMonth DATETIME = CONVERT(DATE, DATEADD(d, -(DAY(DATEADD(m, 1, GETDATE()))), DATEADD(m, 1, GETDATE()))) 
    , @FirstDayOfLastMonth DATETIME = CONVERT(DATE, DATEADD(d, -(DAY(DATEADD(m, -1, GETDATE() - 2))), DATEADD(m, -1, GETDATE() - 1))) 
    , @LastDayOfLastMonth DATETIME = CONVERT(DATE, DATEADD(d, -(DAY(GETDATE())), GETDATE())) 
    , @FirstDayOfNextMonth DATETIME = CONVERT(DATE, DATEADD(d, -(DAY(DATEADD(m, 1, GETDATE() - 1))), DATEADD(m, 1, GETDATE()))) 
    , @LastDayOfNextMonth DATETIME = CONVERT(DATE, DATEADD(d, -(DAY(DATEADD(m, 2, GETDATE()))), DATEADD(m, 2, GETDATE()))) 
    , @FirstDayOfCurrentYear DATETIME = CONVERT(DATE, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)) 
    , @LastDayOfCurrentYear DATETIME = CONVERT(DATE, DATEADD(ms, -2, DATEADD(YEAR, 0, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, 0)))) 
    , @FirstDayOfLastYear DATETIME = CONVERT(DATE, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) - 1, 0)) 
    , @LastDayOfLastYear DATETIME = CONVERT(DATE, DATEADD(ms, -2, DATEADD(YEAR, 0, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)))) 
    , @FirstDayOfNextYear DATETIME = CONVERT(DATE, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, 0)) 
    , @LastDayOfNextYear DATETIME = CONVERT(DATE, DATEADD(ms, -2, DATEADD(YEAR, 0, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 2, 0)))) 

SELECT 
    'a) FirstDayOfCurrentWeek.' AS [Title] , 
    @FirstDayOfCurrentWeek AS [DATE (Server default)] , 
    CONVERT(VARCHAR, @FirstDayOfCurrentWeek, 127) AS [ISO8601] , 
    CONVERT(VARCHAR, @FirstDayOfCurrentWeek, 103) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] , 
    CONVERT(VARCHAR, @FirstDayOfCurrentWeek, 104) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] , 
    CONVERT(VARCHAR, @FirstDayOfCurrentWeek, 105) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] , 
    CONVERT(VARCHAR, @FirstDayOfCurrentWeek, 111) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] , 
    CONVERT(VARCHAR, @FirstDayOfCurrentWeek, 100) AS [U.S.] , 
    CONVERT(VARCHAR, @FirstDayOfCurrentWeek, 120) AS [ODBC] 
UNION 
SELECT 
    'b) LastDayOfCurrentWeek.' AS [Title] , 
    @LastDayOfCurrentWeek AS [DATE (Server default)] , 
    CONVERT(VARCHAR, @LastDayOfCurrentWeek, 127) AS [ISO8601] , 
    CONVERT(VARCHAR, @LastDayOfCurrentWeek, 103) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] , 
    CONVERT(VARCHAR, @LastDayOfCurrentWeek, 104) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] , 
    CONVERT(VARCHAR, @LastDayOfCurrentWeek, 105) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] , 
    CONVERT(VARCHAR, @LastDayOfCurrentWeek, 111) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] , 
    CONVERT(VARCHAR, @LastDayOfCurrentWeek, 100) AS [U.S.] , 
    CONVERT(VARCHAR, @LastDayOfCurrentWeek, 120) AS [ODBC] 
UNION 
SELECT 
    'c) FirstDayOfLastWeek.' AS [Title] , 
    @FirstDayOfLastWeek AS [DATE (Server default)] , 
    CONVERT(VARCHAR, @FirstDayOfLastWeek, 127) AS [ISO8601] , 
    CONVERT(VARCHAR, @FirstDayOfLastWeek, 103) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] , 
    CONVERT(VARCHAR, @FirstDayOfLastWeek, 104) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] , 
    CONVERT(VARCHAR, @FirstDayOfLastWeek, 105) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] , 
    CONVERT(VARCHAR, @FirstDayOfLastWeek, 111) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] , 
    CONVERT(VARCHAR, @FirstDayOfLastWeek, 100) AS [U.S.] , 
    CONVERT(VARCHAR, @FirstDayOfLastWeek, 120) AS [ODBC] 
UNION 
SELECT 
    'd) LastDayOfLastWeek.' AS [Title] , 
    @LastDayOfLastWeek AS [DATE (Server default)] , 
    CONVERT(VARCHAR, @LastDayOfLastWeek, 127) AS [ISO8601] , 
    CONVERT(VARCHAR, @LastDayOfLastWeek, 103) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] , 
    CONVERT(VARCHAR, @LastDayOfLastWeek, 104) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] , 
    CONVERT(VARCHAR, @LastDayOfLastWeek, 105) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] , 
    CONVERT(VARCHAR, @LastDayOfLastWeek, 111) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] , 
    CONVERT(VARCHAR, @LastDayOfLastWeek, 100) AS [U.S.] , 
    CONVERT(VARCHAR, @LastDayOfLastWeek, 120) AS [ODBC] 
UNION 
SELECT 
    'e) FirstDayOfNextWeek.' AS [Title] , 
    @FirstDayOfNextWeek AS [DATE (Server default)] , 
    CONVERT(VARCHAR, @FirstDayOfNextWeek, 127) AS [ISO8601] , 
    CONVERT(VARCHAR, @FirstDayOfNextWeek, 103) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] , 
    CONVERT(VARCHAR, @FirstDayOfNextWeek, 104) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] , 
    CONVERT(VARCHAR, @FirstDayOfNextWeek, 105) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] , 
    CONVERT(VARCHAR, @FirstDayOfNextWeek, 111) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] , 
    CONVERT(VARCHAR, @FirstDayOfNextWeek, 100) AS [U.S.] , 
    CONVERT(VARCHAR, @FirstDayOfNextWeek, 120) AS [ODBC] 
UNION 
SELECT 
    'f) LastDayOfNextWeek.' AS [Title] , 
    @LastDayOfNextWeek AS [DATE (Server default)] , 
    CONVERT(VARCHAR, @LastDayOfNextWeek, 127) AS [ISO8601] , 
    CONVERT(VARCHAR, @LastDayOfNextWeek, 103) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] , 
    CONVERT(VARCHAR, @LastDayOfNextWeek, 104) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] , 
    CONVERT(VARCHAR, @LastDayOfNextWeek, 105) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] , 
    CONVERT(VARCHAR, @LastDayOfNextWeek, 111) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] , 
    CONVERT(VARCHAR, @LastDayOfNextWeek, 100) AS [U.S.] , 
    CONVERT(VARCHAR, @LastDayOfNextWeek, 120) AS [ODBC] 
UNION 
SELECT 
    'g) FirstDayOfCurrentMonth.' AS [Title] , 
    @FirstDayOfCurrentMonth AS [DATE (Server default)] , 
    CONVERT(VARCHAR, @FirstDayOfCurrentMonth, 127) AS [ISO8601] , 
    CONVERT(VARCHAR, @FirstDayOfCurrentMonth, 103) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] , 
    CONVERT(VARCHAR, @FirstDayOfCurrentMonth, 104) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] , 
    CONVERT(VARCHAR, @FirstDayOfCurrentMonth, 105) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] , 
    CONVERT(VARCHAR, @FirstDayOfCurrentMonth, 111) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] , 
    CONVERT(VARCHAR, @FirstDayOfCurrentMonth, 100) AS [U.S.] , 
    CONVERT(VARCHAR, @FirstDayOfCurrentMonth, 120) AS [ODBC] 
UNION 
SELECT 
    'h) LastDayOfCurrentMonth.' AS [Title] , 
    @LastDayOfCurrentMonth AS [DATE (Server default)] , 
    CONVERT(VARCHAR, @LastDayOfCurrentMonth, 127) AS [ISO8601] , 
    CONVERT(VARCHAR, @LastDayOfCurrentMonth, 103) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] , 
    CONVERT(VARCHAR, @LastDayOfCurrentMonth, 104) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] , 
    CONVERT(VARCHAR, @LastDayOfCurrentMonth, 105) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] , 
    CONVERT(VARCHAR, @LastDayOfCurrentMonth, 111) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] , 
    CONVERT(VARCHAR, @LastDayOfCurrentMonth, 100) AS [U.S.] , 
    CONVERT(VARCHAR, @LastDayOfCurrentMonth, 120) AS [ODBC] 
UNION 
SELECT 
    'i) FirstDayOfLastMonth.' AS [Title] , 
    @FirstDayOfLastMonth AS [DATE (Server default)] , 
    CONVERT(VARCHAR, @FirstDayOfLastMonth, 127) AS [ISO8601] , 
    CONVERT(VARCHAR, @FirstDayOfLastMonth, 103) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] , 
    CONVERT(VARCHAR, @FirstDayOfLastMonth, 104) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] , 
    CONVERT(VARCHAR, @FirstDayOfLastMonth, 105) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] , 
    CONVERT(VARCHAR, @FirstDayOfLastMonth, 111) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] , 
    CONVERT(VARCHAR, @FirstDayOfLastMonth, 100) AS [U.S.] , 
    CONVERT(VARCHAR, @FirstDayOfLastMonth, 120) AS [ODBC] 
UNION 
SELECT 
    'j) LastDayOfLastMonth.' AS [Title] , 
    @LastDayOfLastMonth AS [DATE (Server default)] , 
    CONVERT(VARCHAR, @LastDayOfLastMonth, 127) AS [ISO8601] , 
    CONVERT(VARCHAR, @LastDayOfLastMonth, 103) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] , 
    CONVERT(VARCHAR, @LastDayOfLastMonth, 104) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] , 
    CONVERT(VARCHAR, @LastDayOfLastMonth, 105) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] , 
    CONVERT(VARCHAR, @LastDayOfLastMonth, 111) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] , 
    CONVERT(VARCHAR, @LastDayOfLastMonth, 100) AS [U.S.] , 
    CONVERT(VARCHAR, @LastDayOfLastMonth, 120) AS [ODBC] 
UNION 
SELECT 
    'k) FirstDayOfNextMonth.' AS [Title] , 
    @FirstDayOfNextMonth AS [DATE (Server default)] , 
    CONVERT(VARCHAR, @FirstDayOfNextMonth, 127) AS [ISO8601] , 
    CONVERT(VARCHAR, @FirstDayOfNextMonth, 103) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] , 
    CONVERT(VARCHAR, @FirstDayOfNextMonth, 104) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] , 
    CONVERT(VARCHAR, @FirstDayOfNextMonth, 105) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] , 
    CONVERT(VARCHAR, @FirstDayOfNextMonth, 111) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] , 
    CONVERT(VARCHAR, @FirstDayOfNextMonth, 100) AS [U.S.] , 
    CONVERT(VARCHAR, @FirstDayOfNextMonth, 120) AS [ODBC] 
UNION 
SELECT 
    'l) LastDayOfNextMonth.' AS [Title] , 
    @LastDayOfNextMonth AS [DATE (Server default)] , 
    CONVERT(VARCHAR, @LastDayOfNextMonth, 127) AS [ISO8601] , 
    CONVERT(VARCHAR, @LastDayOfNextMonth, 103) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] , 
    CONVERT(VARCHAR, @LastDayOfNextMonth, 104) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] , 
    CONVERT(VARCHAR, @LastDayOfNextMonth, 105) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] , 
    CONVERT(VARCHAR, @LastDayOfNextMonth, 111) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] , 
    CONVERT(VARCHAR, @LastDayOfNextMonth, 100) AS [U.S.] , 
    CONVERT(VARCHAR, @LastDayOfNextMonth, 120) AS [ODBC] 
UNION 
SELECT 
    'm) FirstDayOfCurrentYear.' AS [Title] , 
    @FirstDayOfCurrentYear AS [DATE (Server default)] , 
    CONVERT(VARCHAR, @FirstDayOfCurrentYear, 127) AS [ISO8601] , 
    CONVERT(VARCHAR, @FirstDayOfCurrentYear, 103) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] , 
    CONVERT(VARCHAR, @FirstDayOfCurrentYear, 104) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] , 
    CONVERT(VARCHAR, @FirstDayOfCurrentYear, 105) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] , 
    CONVERT(VARCHAR, @FirstDayOfCurrentYear, 111) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] , 
    CONVERT(VARCHAR, @FirstDayOfCurrentYear, 100) AS [U.S.] , 
    CONVERT(VARCHAR, @FirstDayOfCurrentYear, 120) AS [ODBC] 
UNION 
SELECT 
    'n) LastDayOfCurrentYear.' AS [Title] , 
    @LastDayOfCurrentYear AS [DATE (Server default)] , 
    CONVERT(VARCHAR, @LastDayOfCurrentYear, 127) AS [ISO8601] , 
    CONVERT(VARCHAR, @LastDayOfCurrentYear, 103) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] , 
    CONVERT(VARCHAR, @LastDayOfCurrentYear, 104) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] , 
    CONVERT(VARCHAR, @LastDayOfCurrentYear, 105) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] , 
    CONVERT(VARCHAR, @LastDayOfCurrentYear, 111) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] , 
    CONVERT(VARCHAR, @LastDayOfCurrentYear, 100) AS [U.S.] , 
    CONVERT(VARCHAR, @LastDayOfCurrentYear, 120) AS [ODBC] 
UNION 
SELECT 
    'o) FirstDayOfLastYear.' AS [Title] , 
    @FirstDayOfLastYear AS [DATE (Server default)] , 
    CONVERT(VARCHAR, @FirstDayOfLastYear, 127) AS [ISO8601] , 
    CONVERT(VARCHAR, @FirstDayOfLastYear, 103) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] , 
    CONVERT(VARCHAR, @FirstDayOfLastYear, 104) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] , 
    CONVERT(VARCHAR, @FirstDayOfLastYear, 105) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] , 
    CONVERT(VARCHAR, @FirstDayOfLastYear, 111) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] , 
    CONVERT(VARCHAR, @FirstDayOfLastYear, 100) AS [U.S.] , 
    CONVERT(VARCHAR, @FirstDayOfLastYear, 120) AS [ODBC] 
UNION 
SELECT 
    'p) LastDayOfLastYear.' AS [Title] , 
    @LastDayOfLastYear AS [DATE (Server default)] , 
    CONVERT(VARCHAR, @LastDayOfLastYear, 127) AS [ISO8601] , 
    CONVERT(VARCHAR, @LastDayOfLastYear, 103) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] , 
    CONVERT(VARCHAR, @LastDayOfLastYear, 104) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] , 
    CONVERT(VARCHAR, @LastDayOfLastYear, 105) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] , 
    CONVERT(VARCHAR, @LastDayOfLastYear, 111) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] , 
    CONVERT(VARCHAR, @LastDayOfLastYear, 100) AS [U.S.] , 
    CONVERT(VARCHAR, @LastDayOfLastYear, 120) AS [ODBC] 
UNION 
SELECT 
    'q) FirstDayOfNextYear.' AS [Title] , 
    @FirstDayOfNextYear AS [DATE (Server default)] , 
    CONVERT(VARCHAR, @FirstDayOfNextYear, 127) AS [ISO8601] , 
    CONVERT(VARCHAR, @FirstDayOfNextYear, 103) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] , 
    CONVERT(VARCHAR, @FirstDayOfNextYear, 104) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] , 
    CONVERT(VARCHAR, @FirstDayOfNextYear, 105) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] , 
    CONVERT(VARCHAR, @FirstDayOfNextYear, 111) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] , 
    CONVERT(VARCHAR, @FirstDayOfNextYear, 100) AS [U.S.] , 
    CONVERT(VARCHAR, @FirstDayOfNextYear, 120) AS [ODBC] 
UNION 
SELECT 
    'r) LastDayOfNextYear.' AS [Title] , 
    @LastDayOfNextYear AS [DATE (Server default)] , 
    CONVERT(VARCHAR, @LastDayOfNextYear, 127) AS [ISO8601] , 
    CONVERT(VARCHAR, @LastDayOfNextYear, 103) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] , 
    CONVERT(VARCHAR, @LastDayOfNextYear, 104) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] , 
    CONVERT(VARCHAR, @LastDayOfNextYear, 105) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] , 
    CONVERT(VARCHAR, @LastDayOfNextYear, 111) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] , 
    CONVERT(VARCHAR, @LastDayOfNextYear, 100) AS [U.S.] , 
    CONVERT(VARCHAR, @LastDayOfNextYear, 120) AS [ODBC]; 

运行上面的代码生成以下的输出:

enter image description here

如果您的国家失踪,那是因为我不知道为它的代码。如果你可以请编辑这个答案并为你的国家添加一个新栏目,这将是最有帮助和赞赏的。

在此先感谢。

注:记住,今天对我的日期是2016年9月12日

参考

有关ISO8601国际标准日期进一步阅读,请点击此链接:

有关ODBC国际最新标准进一步阅读,请此链接:

要查看日期格式,我从工作清单,请点击此链接:

有关DATETIME数据类型进一步阅读,请点击此链接:

相关问题