SQL获取当前时间(日期)
### SQL 获取当前时间(日期)知识点详解 在SQL Server中,获取当前的时间和日期是非常常见的需求之一。通过本文,我们将详细介绍几种不同的方法来获取当前时间(包括日期与时间的组合)。这些方法适用于不同的应用场景,例如当您需要记录数据插入或更新的时间戳时。 #### GETDATE() 函数 `GETDATE()`函数是SQL Server中最常用的获取当前系统日期和时间的方法。它返回一个`datetime`类型的值,格式为`YYYY-MM-DD HH:MI:SS`。 ```sql SELECT GETDATE(); -- 返回当前日期时间 ``` #### 使用CONVERT 和 FORMAT 函数 除了`GETDATE()`函数之外,还可以使用`CONVERT`和`FORMAT`函数来更改日期时间的显示格式。这允许我们以更符合特定业务需求的格式显示日期时间。 ##### 1. **CONVERT 函数** `CONVERT`函数可以将日期时间转换为指定的字符串格式。其语法如下: ```sql SELECT CONVERT(data_type, expression, style); ``` 其中: - `data_type`:目标数据类型。 - `expression`:待转换的表达式,通常是`GETDATE()`。 - `style`:指定的格式风格编号。 **示例**: ```sql -- 格式化为 YYYYMMDD SELECT CONVERT(nvarchar(12), GETDATE(), 112); -- 格式化为 YYYY-MM-DD SELECT CONVERT(varchar(12), GETDATE(), 111); -- 格式化为 YYYY/MM/DD SELECT CONVERT(varchar(12), GETDATE(), 102); -- 格式化为 MM/DD/YYYY SELECT CONVERT(varchar(12), GETDATE(), 101); -- 格式化为 DD/MM/YYYY SELECT CONVERT(varchar(12), GETDATE(), 103); -- 格式化为 DD-MM-YYYY SELECT CONVERT(varchar(12), GETDATE(), 104); -- 格式化为 YYYYMMDDHHMMSS SELECT CONVERT(varchar(14), GETDATE(), 112) + RIGHT('0' + CAST(DATEPART(HOUR, GETDATE()) AS varchar(2)), 2) + RIGHT('0' + CAST(DATEPART(MINUTE, GETDATE()) AS varchar(2)), 2) + RIGHT('0' + CAST(DATEPART(SECOND, GETDATE()) AS varchar(2)), 2); -- 格式化为 YYYY-MM-DD HH:MM:SS SELECT CONVERT(varchar(12), GETDATE(), 111) + ' ' + DATENAME(HH, GETDATE()) + ':' + DATENAME(MI, GETDATE()) + ':' + DATENAME(SECOND, GETDATE()); ``` ##### 2. **DATEPART 函数** `DATEPART`函数用于从日期时间表达式中提取特定部分,如年份、月份、日等。 ```sql SELECT DATEPART(YEAR, GETDATE()); -- 返回当前年份 SELECT DATEPART(MONTH, GETDATE()); -- 返回当前月份 SELECT DATEPART(DAY, GETDATE()); -- 返回当前日期 SELECT DATEPART(HOUR, GETDATE()); -- 返回当前小时 SELECT DATEPART(MINUTE, GETDATE()); -- 返回当前分钟 SELECT DATEPART(SECOND, GETDATE()); -- 返回当前秒 SELECT DATEPART(MILLISECOND, GETDATE()); -- 返回当前毫秒 SELECT DATEPART(WEEK, GETDATE()); -- 返回当前周数 SELECT DATEPART(WEEKDAY, GETDATE()); -- 返回当前星期几 ``` #### DATENAME 函数 `DATENAME`函数用于从日期时间表达式中提取特定部分,并以文本形式返回。与`DATEPART`不同,`DATENAME`返回的是文本而不是数字。 ```sql SELECT DATENAME(YEAR, GETDATE()); -- 返回当前年份 SELECT DATENAME(MONTH, GETDATE()); -- 返回当前月份 SELECT DATENAME(DAY, GETDATE()); -- 返回当前日期 SELECT DATENAME(HH, GETDATE()); -- 返回当前小时 SELECT DATENAME(MI, GETDATE()); -- 返回当前分钟 SELECT DATENAME(SECOND, GETDATE()); -- 返回当前秒 SELECT DATENAME(WEEK, GETDATE()); -- 返回当前周数 SELECT DATENAME(WEEKDAY, GETDATE()); -- 返回当前星期几 ``` #### 小结 以上介绍了SQL Server中获取当前时间和日期的各种方法。这些方法可以帮助您根据具体的应用场景灵活地处理日期时间数据。无论是记录事件发生的具体时间还是进行数据分析,了解如何有效地使用这些内置函数都是非常有用的。希望本文能够帮助您更好地理解和应用SQL中的日期时间功能。