Gop*_*pal 100 sql sql-server sql-server-2000
使用SQL Server 2000,我如何获得当年的第一个和最后一个日期?
预期产出:
01/01/2012 和 31/12/2012
Jam*_*e F 221
SELECT
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS EndOfYear
Run Code Online (Sandbox Code Playgroud)
上面的查询给出了12月31日午夜的日期时间值.这比一年中的最后一刻短约24小时.如果你想包括12月31日可能出现的时间,那么你应该与下一年的第一年进行<比较,并进行比较.或者你可以比较当前年份的最后几毫秒,但是如果你使用DATETIME以外的东西(例如DATETIME2),这仍然会留下空白:
SELECT
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS LastDayOfYear,
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0) AS FirstOfNextYear,
DATEADD(ms, -3, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0)) AS LastTimeOfYear
Run Code Online (Sandbox Code Playgroud)
技术细节
这是通过与自1900年以来搞清楚的年数DATEDIFF(yy, 0, GETDATE()),然后补充说,到零日期= 1月1日,1900年这可以更改为任意日期的工作通过更换GETDATE()通过更换部分或任意年DATEDIFF(...)与功能"年 - 1900年."
SELECT
DATEADD(yy, DATEDIFF(yy, 0, '20150301'), 0) AS StartOfYearForMarch2015,
DATEADD(yy, 2015 - 1900, 0) AS StartOfYearFor2015
Run Code Online (Sandbox Code Playgroud)
Vik*_*dor 11
您可以使用DATEPART当前日期使用函数获取当前年份getUTCDate()
SELECT
'01/01/' + CONVERT(VARCHAR(4), DATEPART(yy, getUTCDate())),
'31/12/' + CONVERT(VARCHAR(4), DATEPART(yy, getUTCDate()))
Run Code Online (Sandbox Code Playgroud)
另一种方式:(自 SQL Server 2012 起)
SELECT
DATEFROMPARTS(YEAR(GETDATE()), 1, 1) FirstDay,
DATEFROMPARTS(YEAR(GETDATE()),12,31) LastDay
Run Code Online (Sandbox Code Playgroud)
简单地写: -
select convert (date,DATEADD(YEAR,DATEDIFF(YEAR,0,GETDATE()),0))
Run Code Online (Sandbox Code Playgroud)
一年的开始日期.
select convert (date,DATEADD(YEAR, DATEDIFF(YEAR,0,GETDATE()) + 1, -1))
Run Code Online (Sandbox Code Playgroud)
小智 5
这是一种相当简单的方法;
SELECT DATEFROMPARTS(YEAR(GETDATE()), 1, 1) AS 'First Day of Current Year';
SELECT DATEFROMPARTS(YEAR(GETDATE()), 12, 31) AS 'End of Current Year';
Run Code Online (Sandbox Code Playgroud)
它不是性感的,但是很有效。
| 归档时间: |
|
| 查看次数: |
290116 次 |
| 最近记录: |