如何在mssql数据库中以106格式插入字符串作为日期?

时间:2013-09-30 09:00:01

标签: sql sql-server date insert

我需要在我的MSSQL数据库中插入一个字符串作为日期。 我正在尝试此查询,但它不是按照我的期望插入。

Insert into date_table (CONFIG_DATE) 
Values (CONVERT(VARCHAR(11),CONVERT(DATETIME,'18-SEP-13',103),106));

插入为: 2013-09-18 但预计产量 18-SEP-2013

任何帮助都会受到赞赏..

4 个答案:

答案 0 :(得分:0)

我不希望以这种格式插入日期值,因为我看不到任何优势或可能性。

我认为最好的方法是将数据以datedatatime格式存储在数据库中,并在执行选择时应用格式。

答案 1 :(得分:0)

我不确定为什么在插入之前将转换后的日期转换回字符串。 Date itself does not have a format。格式化用于演示目的。

最好的事情是将日期存储为日期而不是字符串。第一次转换应该是106样式。

Insert into date_table (CONFIG_DATE) 
Values (CONVERT(DATETIME,'18-SEP-13',106));

将字符串转换为日期类型时,最安全的做法是使用与文化无关的ISO格式。例如yyyymmdd(ISO格式)和yyyy-mm-ddThh:mi:ss.mmm (no spaces)(ISO8601)。

答案 2 :(得分:0)

你能提供你的表架构吗?

我认为您的列数据类型是datetime,date或datetime2,并且您无法在 datetime,date或datetime2 列中插入 18-SEP-2013 ..您需要插入它 2013-09-18 但是当你选择它时,你可以写

select CONVERT(varchar(30), CONFIG_DATE, 106)

答案 3 :(得分:-1)

试试这个

Insert into date_table (CONFIG_DATE) 
Values (replace(CONVERT(VARCHAR(11),CONVERT(DATETIME,'18-SEP-13',103),106),' ','-'))