我有一个字符串s='200407091536' 把它转换成日期时间型,然后把它插入sql server 2000数据库一个日期时间字段(长度8)中.ru 
1 .如何写语句呀?
2 s='200407091536' 的长度为12位 ,能插在日期时间字段(长度8)中吗?

解决方案 »

  1.   

    你只要将'200407091536'转换成'2004-07-09 15:36:00'
    再在SQL语句中使用
    insert into ddd(日期字段) values(convert(datetime,'2004-07-09 15:36:00',101))就行
    参见:编写国际化 Transact-SQL 语句
    如果遵从以下准则,则使用 Transact-SQL 语句的数据库和数据库应用程序将更便于在语言间进行移植,或将支持多种语言: 用 ncha、nvarchar 和 ntext 代替所有的 char、varchar 和 text 数据类型。这样就可以不必考虑代码页的转换问题。
    当执行月份和星期的比较与操作时,请使用数字日期,不要使用名称字符串。不同语言设置返回的月份和星期名称是不同的。例如,当语言设置为美国英语时,DATENAME(MONTH,GETDATE()) 返回 May,而当语言设置为德语时,返回 Mai,语言设置为法语时则返回 mai。应使用以数字而非名称表示月份的函数,如 DATEPART。当生成要显示给用户的结果集时,可使用DATEPART名称,因为日期名称通常比数字表示形式更有意义;但是,编写逻辑代码时不要使用任何依赖于特定语言显示的名称。
    当指定用于比较操作的日期或者用于 INSERT 或 UPDATE 语句的输入的日期时,请使用对于所有的语言设置解释都相同的常量: 
    ADO、OLE DB 和 ODBC 应用程序应该使用以下的 ODBC 时间戳、日期和时间转义子句:
    { ts 'yyyy-mm-dd hh:mm:ss[.fff] '},例如 { ts '1998-09-24 10:02:20' }
    { d 'yyyy-mm-dd'},例如 { d '1998-09-24' }
    { t 'hh:mm:ss'},例如 { t '10:02:20'}
    使用其它 API 的应用程序或 Transact-SQL 脚本、存储过程和触发器都应该使用连在一起的数字字符串(例如 yyyymmdd 为 19980924)。
    使用其它 API 的应用程序或 Transact-SQL 脚本、存储过程和触发器都应该使用带有显式参数的 CONVERT 语句,以进行 date 和 smalldate 数据类型及字符串数据类型之间的所有转换。例如,下列语句的解释对于所有语言或日期格式连接设置都是相同的: 
    SELECT *
    FROM Northwind.dbo.Orders
    WHERE OrderDate = CONVERT(DATETIME, '7/19/1996', 101)
      

  2.   

    我有个容易懂的办法就是将'200407091536'转换成'2004-07-09 15:36:00'然后调用strtodata函数转化成TDATATIME型,然后随便处理就可以了