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
有关所有日期时间格式的列表.
CONVERT(CHAR(10), MyDateValue, 120)
Run Code Online (Sandbox Code Playgroud)
但是,为什么不将日期存储为,呃,"日期"或"smalldatetime"?并使用GETDATE()作为默认值
做得恰当的原因
编辑:
您不使用SELECT作为默认值.您使用函数或常量.
从CREATE TABLE:...DEFAULT constant_expression...
所以将CONVERT包装在UDF中.或者使用GETDATE().
你为什么要使用102风格?