SQL Server 的 CURRENT_DATE 或当前日期值函数是什么?

Eva*_*oll 4 sql-server date

什么是 SQL Server 功能,它允许您将当前日期作为DATE类似于 SQL 标准CURRENT_DATE功能的类型获取。什么是<current date value function>SQL Server的?

使用 PostgreSQL,我正在寻找类似的东西,

SELECT CURRENT_DATE;
 current_date 
--------------
 2018-06-27
(1 row)
Run Code Online (Sandbox Code Playgroud)

小智 6

您可以使用GETDATE(return type datetime) 或SYSDATETIME(return type datetime2),区别在于SYSDATETIME().

例子:

SELECT GETDATE() fn_GetDate, SYSDATETIME() fn_SysDateTime
Run Code Online (Sandbox Code Playgroud)

结果:

fn_GetDate fn_SysDateTime                  2018-06-27 
10:31:18.963 2018-06-27 10:31:18.9659170

请参阅产品文档中的日期和时间数据类型和函数 (Transact-SQL)


为完整起见,SQL Server 也CURRENT_DATE将问题中提到的识别为ODBC 标量函数

SELECT {fn CURRENT_DATE()};
Run Code Online (Sandbox Code Playgroud)

这将返回varchar(10),因此需要显式转换或转换为date数据类型:

SELECT CONVERT(date, {fn CURRENT_DATE()});
Run Code Online (Sandbox Code Playgroud)

与 ODBC 标量函数相比,推荐使用内置函数。


Eva*_*oll 4

CAST (... to date)GETDATE()SYSDATETIME()

最好的办法是

SELECT CAST( GETDATE() AS date );
Run Code Online (Sandbox Code Playgroud)

通过 SQL Server 中的扩展,您可以转换SYSDATETIME()为日期,

SELECT CAST( SYSDATETIME() AS date );
Run Code Online (Sandbox Code Playgroud)

SYSDATETIME(Transact-SQL)上的文档显示了更多示例,

SELECT CONVERT (date, SYSDATETIME())  
    ,CONVERT (date, SYSDATETIMEOFFSET())  
    ,CONVERT (date, SYSUTCDATETIME())  
    ,CONVERT (date, CURRENT_TIMESTAMP)  
    ,CONVERT (date, GETDATE())  
    ,CONVERT (date, GETUTCDATE());  

/* All returned 2007-04-30 */  
Run Code Online (Sandbox Code Playgroud)

可能有优点CAST (GETDATE() AS date),因为GETDATE()本身返回的精度较低。