我有这样的查询:
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()
转换为 aVarchar
然后再转换回 a 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 cast(convert(varchar(10), getdate(), 110) + ' 23:59:59.997' as datetime)
仅用于显示(无毫秒)
SELECT
CONVERT(VARCHAR(10), GETDATE(), 110) + ' 23:59:59'