您的位置:首页 > 数据库

MS SQL Server 数据库日期时间函数的应用

2010-08-10 10:16 435 查看
因为实际应用中经常会用到日期时间,所以需要总结一下实际的应用。在网上找了一些并总结了如下的一些应用:

1、定义日期时间变量,并设置日期时间

DECLARE @Date datetime;					-- 定义日期时间变量
SET @Date = '2010-8-10';				-- 设置日期
SET @Date = '10:18:20';					-- 设置时间
SET @Date = '2010-8-10 10:18:20.123';	-- 设置日期和时间

2、获取当前日期时间,获取第一天

SELECT GETDATE();												-- 获取当前系统日期和时间
SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0);			-- 获取当前日期
SELECT DATEADD(week, DATEDIFF(week, 0, GETDATE()), 0);			-- 获取本周一
SELECT DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0);		-- 获取本月第一天
SELECT DATEADD(quarter, DATEDIFF(quarter, 0, GETDATE()), 0);	-- 获取本季第一天
SELECT DATEADD(year, DATEDIFF(year, 0, GETDATE()), 0);			-- 获取本年第一天

修改 GETDATE() 部分,可以获取指定日期的本年、月第一天,下同。[/code]
3、获取最后时间

SELECT DATEADD(millisecond, -3, DATEADD(week, DATEDIFF(week, 0, GETDATE()) + 1, 0));		-- 获取本周最后时间
SELECT DATEADD(millisecond, -3, DATEADD(month, DATEDIFF(month, 0, GETDATE()) + 1, 0));		-- 获取本月最后时间
SELECT DATEADD(millisecond, -3, DATEADD(quarter, DATEDIFF(quarter, 0, GETDATE()) + 1, 0));	-- 获取本季最后时间
SELECT DATEADD(millisecond, -3, DATEADD(year, DATEDIFF(year, 0, GETDATE()) + 1, 0));		-- 获取本年最后时间

4、获取星期几

SELECT DATENAME(weekday, GETDATE())	-- 获取星期几

5、获取某月、季、年的天数

-- 获取本月天数
SELECT DAY(DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, GETDATE()) + 1, 0)));
-- 获取本月天数
SELECT DATEDIFF(d, DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0), DATEADD(m, DATEDIFF(m, 0, GETDATE()) + 1, 0));
-- 获取本季天数
SELECT DATEDIFF(d, DATEADD(q, DATEDIFF(q, 0, GETDATE()), 0), DATEADD(q, DATEDIFF(q, 0, GETDATE()) + 1, 0));
-- 获取本年天数
SELECT DATEDIFF(d, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0), DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0));

6、判断是否闰年

SELECT CASE DAY(DATEADD(d, -1, DATEADD(m, 2, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0)))) WHEN 28 THEN '平年' ELSE '闰年' END;

7、数据类型转换

SELECT CONVERT(varchar, GETDATE(), 112);			-- "20100818"
SELECT CONVERT(varchar, GETDATE(), 20);				-- "2010-08-18 8:28:38"
SELECT CONVERT(varchar, GETDATE(), 21);				-- "2010-08-18 8:28:38.888"
SELECT CONVERT(datetime, '2010-08-18 8:28:38.888');	-- 字符串转日期时间

8、格式化日期时间

DECLARE @Date datetime;
SET @Date = GETDATE();
SELECT CONVERT(varchar, YEAR(@Date)) + '年' + CONVERT(varchar, MONTH(@Date)) + '月' + CONVERT(varchar, DAY(@Date)) + '日';

参考:

非常详细MSSQL数据库时间日期函数的应用(日期相加,日期相减等等)
SQL SERVER日期函数应用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: