小智 37
现在是午夜时间:
Select DATEADD(d,0,DATEDIFF(d,0,GETDATE()))
Run Code Online (Sandbox Code Playgroud)
增加600分钟:
Select DATEADD(mi,600,DATEDIFF(d,0,GETDATE()))
Run Code Online (Sandbox Code Playgroud)
Cha*_*ana 26
是的,只需使用datediff和dateadd函数从任何日期剥离时间,然后将一天的小数部分添加到该数字
Declare @aDate DateTime
Set @aDate = getDate()
Declare @Minutes Integer
Set @minutes = 600 -- 10 hours
Select DateAdd(day, DateDiff(day, 0, @aDate), 0) + @minutes / 1440.0 -- 1440 min/day
-- or You could also use the dateadd again...
Select DateAdd(minute, @minutes , DateAdd(day, DateDiff(day, 0, @aDate), 0))
Run Code Online (Sandbox Code Playgroud)
两者都选择在同一天上午10:00(或多或少)返回.这是有效的,因为,检查这个SO答案
编辑:添加示例脚本以显示其工作原理:
declare @dtTim datetime = getDate()
declare @today datetime = dateAdd(day, dateDiff(day, 0, @dtTim ), 0)
select @dtTim, @today
Run Code Online (Sandbox Code Playgroud)
Jef*_*ata 13
您还可以转换date为剥离时间部分:
declare @minutes int = 600
declare @start datetime = cast(getdate() as date)
declare @finish datetime = dateadd(mi, @minutes, @start)
Run Code Online (Sandbox Code Playgroud)
虽然,老实说,我不知道它的表现如何
dateadd(day, datediff(day, 0, getdate()), 0)
死灵法术:
最简单/最快的方法是:
SELECT
DATEADD(minute, 1,
CAST(FLOOR(CAST(CURRENT_TIMESTAMP AS float)) AS datetime)
)
Run Code Online (Sandbox Code Playgroud)
或使用UTC:
SELECT
DATEADD(minute, 1,
CAST(FLOOR(CAST( GETUTCDATE() AS float)) AS datetime)
)
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为在 SQL-server 中,日期时间是一个浮点值,整数部分表示从 1900 年 1 月 1 日开始的天数,子整数部分表示全天(24 小时)的百分比。
因此,如果(floor)将浮点数四舍五入为整数,则会得到午夜时间。
1900-01-01T00:00:00.000为 0。
| 归档时间: |
|
| 查看次数: |
52978 次 |
| 最近记录: |