2012-07-31 80 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數據類型進一步閱讀,請點擊此鏈接:

相關問題