Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server sqlserver中与日期时间相关的查询_Sql Server - Fatal编程技术网

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,它们就没有格式,也就没有格式问题。