Sql server sqlserver中与日期时间相关的查询
执行上述查询时,结果集的格式如下Sql server sqlserver中与日期时间相关的查询,sql-server,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
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
但我需要以下格式的结果集
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
任何帮助t-sql的结果都是您想要的,但是因为您使用的是
PRINT
查看结果,所以它在打印之前将结果强制转换为varchar
如果您只是选择而不是打印,它将显示您想要查看的内容
2017-04-01 00:00:00.000
您可以在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))
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
输出:
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)
它们在datetime
s时没有格式。出于显而易见的原因,只有那些print
s必须将它们转换为字符串。只要将它们保留为datetime
s,它们就没有格式,也就没有格式问题。