SQL Server getdate()到类似"2009-12-20"的字符串

Ada*_*ane 6 sql t-sql sql-server

在Microsoft SQL Server 2005和.NET 2.0中,我想将当前日期转换为此格式的字符串:"YYYY-MM-DD".例如,2009年12月12日将成为"2009-12-20".我如何在SQL中执行此操作.

表定义中此SQL语句的上下文.换句话说,这是默认值.因此,当创建新记录时,当前日期的默认值将以上述格式存储为字符串.

我正在尝试:SELECT CONVERT(VARCHAR(10),GETDATE(),102)AS [YYYY.MM.DD]

但SQL服务器不断将其转换为:('SELECT CONVERT(VARCHAR(10),GETDATE(),102)AS [YYYY.MM.DD]')

所以结果就是:

'SELECT CONVERT(VARCHAR(10),GETDATE(),102)AS [YYYY.MM.DD]'

以下是Visual Studio服务器资源管理器,表,表定义,属性显示内容的屏幕截图:

替代文字

这些包装器位正在自动添加并将其全部转换为文字字符串:(N'')

这就是我尝试使用以前使用的基本DATETIME之外的其他原因:

这是我将所有内容挂钩到ASP.NET GridView并尝试通过网格视图进行更新时出现的错误:

'/'应用程序中的服务器错误.

正在使用的SQL Server版本不支持数据类型"date".描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.ArgumentException:正在使用的SQL Server版本不支持数据类型"date".

来源错误:

在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.

堆栈跟踪:

[ArgumentException:正在使用的SQL Server版本不支持数据类型'date'.]

注意:我添加了一个相关问题,试图绕过正在使用SQL Server不支持数据类型'date'错误,以便我可以按照建议使用DATETIME.

amr*_*der 11

http://www.sql-server-helper.com/tips/date-formats.aspx

有关所有日期时间格式的列表.

  • 为什么不使用正确的文档?http://msdn.microsoft.com/en-us/library/ms187928.aspx (2认同)

gbn*_*gbn 7

CONVERT(CHAR(10), MyDateValue, 120)
Run Code Online (Sandbox Code Playgroud)

但是,为什么不将日期存储为,呃,"日期"或"smalldatetime"?并使用GETDATE()作为默认值

做得恰当的原因

  • 由于数据类型优先级而导致的隐式转换
  • 语言相关(不提ISO:SQL Server不适合仅限日期ISO 2008)
  • 要存储的10个字节,或者作为varchar的12个字节.如果需要时间更糟(smalldatetime是4)

编辑:

您不使用SELECT作为默认值.您使用函数或常量.

CREATE TABLE:...DEFAULT constant_expression...

所以将CONVERT包装在UDF中.或者使用GETDATE().

你为什么要使用102风格?