2

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

4 回答 4

0

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

最好的办法是将日期存储为 Date 而不是字符串。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)。

于 2013-09-30T09:09:57.200 回答
0

通过以这种格式插入日期值,我不知道您期望什么,因为我看不出它有任何优势或可能性。

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

于 2013-09-30T09:08:21.320 回答
0

你能提供你的表模式吗?

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

select CONVERT(varchar(30), CONFIG_DATE, 106)
于 2013-09-30T09:21:52.433 回答
-1

尝试这个

Insert into date_table (CONFIG_DATE) 
Values (replace(CONVERT(VARCHAR(11),CONVERT(DATETIME,'18-SEP-13',103),106),' ','-'))
于 2013-09-30T09:11:51.850 回答