当我使用INSERT INTO table varchar_field Values (GETDATE())
,数据库存储的值:如何将GETDATE()存储在varchar中,但作为日期时间?
Mar 19 2013 12:55PM
但我想被存储为:
2013-03-19 12:55:24.577
这又如何实现呢?
当我使用INSERT INTO table varchar_field Values (GETDATE())
,数据库存储的值:如何将GETDATE()存储在varchar中,但作为日期时间?
Mar 19 2013 12:55PM
但我想被存储为:
2013-03-19 12:55:24.577
这又如何实现呢?
从MSDN:
select CONVERT(varchar(50),getdate(),121)
INSERT INTO table varchar_field Values (CONVERT(varchar(50),getdate(),121))
由于Lamak指出的那样,我错误地离开了指定VARCHAR
谢谢。我在DATETIME上查看了MSDN页面,看到了对CONVERT的引用,但由于某种原因,没有考虑传递一个参数,而不是时间的例子。 – 2013-03-19 17:37:28
请始终使用带有长度的'VARCHAR'(如'VARCHAR(10)'),不要只使用'VARCHAR',否则可能会得到不正确的结果。从@AaronBertrand看到这个http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kclack-declaring-varchar-without-length.aspx – Lamak 2013-03-19 17:42:47
你*仍然*遗漏了指定'varchar'的长度... – 2013-03-19 17:48:55
请停止存储您的日期值作为varchar
,使用正确的数据类型的长度。
您的最佳解决方案是将您的列更改为正确的数据类型。
但是,如果你需要的getdate()
转换,你可以使用:
INSERT INTO table varchar_field
select convert(varchar(50), GETDATE(), 121)
步骤1
alter yourtable drop column varchar_field
步骤2
alter yourtable add column datetimefield datetime default getdate()
步骤3
select convert(varchar(50), datetimefield, 121)
from yourtable
这种方法允许你改变格式如果需要的话,或做日期math.`
你为什么要储存一个日期作为'varchar'?为什么不改变列上的数据类型?你的问题将得到解决。 – Taryn 2013-03-19 17:04:45
这是一个将各种参数映射到值的配置表。在这种情况下,我将存储日期作为值。 – 2013-03-19 17:38:45
@AlanMarshall希望你没有存储'VARBINARY' ...'SELECT CONVERT(varchar(10),0x6869,121)' – swasheck 2013-03-19 17:42:56