Sql server sql中包含结束时间的当前日期

Sql server sql中包含结束时间的当前日期,sql-server,tsql,Sql Server,Tsql,我有这样的疑问: select cast(convert(varchar(10), getdate(), 110) as datetime) currentdate ----------------------- 2013-07-28 00:00:00.000 currentdate ----------------------- 2013-07-28 23:59:59 这是像这样的返回: select cast(convert(varchar(10), getdate(), 110) a

我有这样的疑问:

select cast(convert(varchar(10), getdate(), 110) as datetime)
currentdate
-----------------------
2013-07-28 00:00:00.000
currentdate
-----------------------
2013-07-28 23:59:59
这是像这样的返回:

select cast(convert(varchar(10), getdate(), 110) as datetime)
currentdate
-----------------------
2013-07-28 00:00:00.000
currentdate
-----------------------
2013-07-28 23:59:59
但我想得到当前日期和结束时间。我的预期输出如下:

select cast(convert(varchar(10), getdate(), 110) as datetime)
currentdate
-----------------------
2013-07-28 00:00:00.000
currentdate
-----------------------
2013-07-28 23:59:59

那么,在这种情况下,你需要给你的varchar,你要转换为更多的字符

select cast(convert(varchar(30), getdate(), 110) as datetime)
                            **
问题是:为什么首先要将GETDATE的输出转换为Varchar,然后再转换回DATETIME

你就不能用它吗

SELECT GETDATE()
就这些

更新:好的,那么你想得到当天,但是固定的时间是23:59:59

试试这个:

SELECT
   CAST(CONVERT(VARCHAR(10), GETDATE(), 110) + ' 23:59:59' AS DATETIME)

那么,在这种情况下,你需要给你的varchar,你要转换为更多的字符

select cast(convert(varchar(30), getdate(), 110) as datetime)
                            **
问题是:为什么首先要将GETDATE的输出转换为Varchar,然后再转换回DATETIME

你就不能用它吗

SELECT GETDATE()
就这些

更新:好的,那么你想得到当天,但是固定的时间是23:59:59

试试这个:

SELECT
   CAST(CONVERT(VARCHAR(10), GETDATE(), 110) + ' 23:59:59' AS DATETIME)

出于显示目的,以下任一项都将执行此操作

SELECT DATEADD(s, -1, DATEADD(day, 1, 
          CONVERT(DATETIME, CONVERT(DATE, GETDATE()))));
……或者

SELECT DATEADD(s, -1, DATEADD(day, 1,
          DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)));
您也可以将固定时间设置为23:59:59,但在闰秒调整时会出现无效时间,这可能是正常的,也可能是不正常的


如果您想将其用于比较目的,最好使用少于下一个日期的日期。

以下任一项都可以用于显示目的

SELECT DATEADD(s, -1, DATEADD(day, 1, 
          CONVERT(DATETIME, CONVERT(DATE, GETDATE()))));
……或者

SELECT DATEADD(s, -1, DATEADD(day, 1,
          DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)));
您也可以将固定时间设置为23:59:59,但在闰秒调整时会出现无效时间,这可能是正常的,也可能是不正常的


如果要将其用于比较目的,最好使用少于下一个日期的日期。

如果要返回当前日期和结束时间,则必须手动附加结束时间:


选择castconvertvarchar10,getdate,110+'23:59:59.997'作为日期时间

如果要返回当前日期和结束时间,则必须手动附加结束时间:


选择castconvertvarchar10,getdate,110+'23:59:59.997'作为日期时间

仅用于不带毫秒的显示

SELECT
    CONVERT(VARCHAR(10), GETDATE(), 110) + ' 23:59:59'

仅用于显示,无需毫秒

SELECT
    CONVERT(VARCHAR(10), GETDATE(), 110) + ' 23:59:59'

先生,我想用结束时间显示日期。我的意思是我的查询返回值如下:2013-07-28 23:59:59执行查询时,我只得到我的答案。我想用结束时间显示日期。我的意思是我的查询返回值如下:2013-07-28 23:59:59执行查询时,我只得到我的答案。为什么?你打算用23:59:59做什么?为什么?你打算用23:59:59做什么?