显示特定的SQL日期时间

时间:2014-09-23 17:21:41

标签: sql datetime sql-server-2005

我试图显示SQL报告的开始和结束时间。我总是希望显示上个月的时间段:

  

开始时间:2014年8月1日00:00:00

     

结束时间:2014年9月1日00:00:00

如果报告在10月份运行,则会提供Sept1-Oct1。不确定如何将其显示为Datetime变量?

3 个答案:

答案 0 :(得分:0)

如果我误解了,我道歉,但这是你在找什么?

SELECT CAST(DATEADD(MONTH,-1,[date]) AS VARCHAR(12)) + '-' + CAST([date] AS VARCHAR(12)) FROM table

如果您要在表格中插入一个SMALLDATETIME,例如

'2014-09-23 10:28:00'

然后将产生的是:

'2014年8月23日 - 2014年第23期'

答案 1 :(得分:0)

DATE_SUB(Date,INTERVAL 1 MONTH) AS PastMonth

会在日期前一个月显示

答案 2 :(得分:0)

采用DATETIME格式,即

SELECT 
    DATEADD(month, DATEDIFF(month, 0, GETDATE())-1, 0) AS StartTime,
    DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0) AS EndTime

如果你想玩字符格式,你可以做很多事情,比如

SELECT 
    DATENAME(MONTH,StartTime) + ' ' + CAST(YEAR(StartTime) AS VARCHAR(4)) + ' - ' + DATENAME(MONTH,EndTime) + ' ' + CAST(YEAR(EndTime) AS VARCHAR(4)),
    LEFT(DATENAME(MONTH,StartTime),3) + ' ' + CAST(YEAR(StartTime) AS VARCHAR(4)) + ' - ' + LEFT(DATENAME(MONTH,EndTime),3) + ' ' + CAST(YEAR(EndTime) AS VARCHAR(4))
FROM
  (
    SELECT 
        DATEADD(month, DATEDIFF(month, 0, GETDATE())-1, 0) AS StartTime,
        DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0) AS EndTime
  ) dt