在SQL服务器日期时间字段中格式化日期时间的正确方法是什么
答
正确的方法是使用参数化查询而不是文本格式。那么你可以使用强类型的SqlDbType.DateTime
参数。
(如果你绝对必须使用文本格式来做到这一点 - ,我强烈建议反对 - 然后像yyyyMMdd HH:mm:ss
应该做的伎俩)
答
SET NOCOUNT ON
CREATE TABLE X(EXAMPLE INT, D SMALLDATETIME)
-- EXAMPLE 1
SET DATEFORMAT MDY
INSERT INTO X VALUES (1, '10/30/56')
-- EXAMPLE 2
SET DATEFORMAT YDM
INSERT INTO X VALUES (2, '56/31/10')
-- EXAMPLE 3
SET DATEFORMAT YMD
INSERT INTO X VALUES (3, '56/10/31')
SELECT * FROM X
答
为了扩大@卢克的答案,我偶然发现了这个错误。
的yyyy-MM-dd HH:mm:ss
格式有SQL Server 2005(一个例子是法国人)在区域/语言问题,而是固定在SQL 2008:
所以,不要使用以下格式:yyyy-MM-dd HH:mm:ss
(空格分隔符)。
只能使用:yyyy-MM-ddTHH:mm:ss
( “T” 分离器)或yyyyMMdd HH:mm:ss
(无定界符破折号)
重要,如果你生成的脚本,包括datetime
常量。
您可能不应该在代码中构建SQL字符串。相反,您应该查看使用存储的特效,参数化查询或ORM。任何这些都可以通过格式化来解决您的问题,因为您只需传递对象,您不必执行任何字符串格式设置。 – 2009-12-19 00:51:33