在 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 并尝试通过网格 View 进行更新时遇到的错误:
“/”应用程序中的服务器错误。
正在使用的 SQL Server 版本不支持数据类型“日期”。
说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的来源的更多信息。
异常详细信息:System.ArgumentException:正在使用的 SQL Server 版本不支持数据类型“日期”。
源错误:
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的来源和位置的信息。
堆栈跟踪:
[ArgumentException: 正在使用的 SQL Server 版本不支持数据类型“日期”。]
注意:我添加了一个相关问题来尝试解决 SQL Server in use does not support datatype 'date' error这样我就可以按照建议使用 DATETIME。
最佳答案
http://www.sql-server-helper.com/tips/date-formats.aspx
获取所有日期时间格式的列表。
关于SQL Server getdate() 到像 "2009-12-20"这样的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1937101/