sql server中与datetime相关的查询

时间:2017-04-21 08:45:57

标签: sql-server

DECLARE @PreviousMonthStart DATETIME
DECLARE @PreviousMonthEnd DATETIME

SET @PreviousMonthStart = DATEADD(m,DATEDIFF(m,0,GETDATE())-1,0)
SET @PreviousMonthEnd = DATEADD(ms,-2,DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0))

PRINT @PreviousMonthStart
PRINT @PreviousMonthEnd

在上面执行查询时,结果集采用以下格式

Mar  1 2017 12:00AM
Mar 31 2017 11:59PM

但我需要以下格式设置结果

2017-04-01 00:00:00.000

任何帮助

2 个答案:

答案 0 :(得分:0)

t-sql的结果是你想要的,但因为你正在使用PRINT来查看结果,所以在打印之前它会将结果转换为varchar。

如果您只是选择而不是PRINT,它会显示您想要看到的内容。

DECLARE @PreviousMonthStart DATETIME
DECLARE @PreviousMonthEnd DATETIME

SET @PreviousMonthStart = DATEADD(m,DATEDIFF(m,0,GETDATE())-1,0)
SET @PreviousMonthEnd = DATEADD(ms,-2,DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0))


SELECT @PreviousMonthStart      -- Result: 2017-03-01 00:00:00.000
SELECT @PreviousMonthEnd        -- Result: 2017-03-31 23:59:59.997

PRINT @PreviousMonthStart       -- Result: Mar  1 2017 12:00AM  
PRINT @PreviousMonthEnd         -- Result: Mar 31 2017 11:59PM

答案 1 :(得分:0)

您可以使用print语句添加CONVERT声明的变量。

DECLARE @PreviousMonthStart DATETIME
DECLARE @PreviousMonthEnd DATETIME

SET @PreviousMonthStart = DATEADD(m,DATEDIFF(m,0,GETDATE())-1,0)
SET @PreviousMonthEnd = DATEADD(ms,-2,DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0))

PRINT CONVERT(VARCHAR(25),@PreviousMonthStart,120)
PRINT CONVERT(VARCHAR(25),@PreviousMonthEnd,120)

<强>输出:

2017-03-01 00:00:00
2017-03-31 23:59:59