当前位置: 首页 > 面试题库 >

在具有Millisec的sql中将varchar转换为datetime

董琦
2023-03-14
问题内容

我有一列abc varchar(100)像这样的数据2011-09-26 16:36:57.810000

我想将此列转换为DATETIME

但是做一个

Convert(DATETIME, abc,120)

正在给出此错误:

从字符串转换日期和/或时间时转换失败。

谁能帮助我将varchar格式转换为datetimeSQL Server 2008?

提前致谢


问题答案:

您可以使用样式121,但 毫秒yyyy-mm-dd hh:mi:ss.mmm(24h)格式(即) 只能包含3位数字

declare @abc varchar(100)='2011-09-26 16:36:57.810' 
select convert(datetime,@abc,121)

因此,您可以通过将varchar字段限制为23个字符来进行排序,然后再转换为:

declare @abc varchar(100)='2011-09-26 16:36:57.810000' 
select convert(datetime,convert(varchar(23),@abc),121)

或使用该Left()函数获取前23个字符,如下所示:

select convert(datetime,left(@abc,23),121)

尽量避免将日期存储为字符串。



 类似资料:
  • 问题内容: 我正在做这个 它给了我这个 但是我想要这个 请帮忙。 问题答案: 首先将其转换为十进制, SQLFiddle演示

  • 问题内容: 我试图使用像这样的数字列表。 这是sql过程的一部分,变量’list_of_ids’是varchar,它包含如下所示的id:1、2、3、4、5 ........如何使用此列表和此查询 问题答案: 也尝试一下。这可能是更好的解决方案,因为它不需要创建任何其他功能。oracle regexp_substr会将逗号分隔的值拆分为不同的行,并传递给查询。

  • 问题内容: 我在下面的查询中,需要转换为 架构图 我尝试了什么 但它们不起作用。请提出建议。 问题答案: 您将需要或作为数据类型,没有可以将数据强制转换/转换为以下数据的数据类型: 请参阅下面的SQL(实际上)在SQL Fiddle中 : 除了您试图转换为不正确的数据类型外,您所使用的语法也不正确。该函数使用以下列或值: 要么 您的原始查询的语法向后。

  • 问题内容: 我已经将包含字符串值(例如吃)和浮动值(例如0.87)的CSV文件导入到phpMyAdmin数据库的表中。获得所有字符串值并仅保留具有十进制值的行后,需要将此类值从VARCHAR转换为DECIMAL / FLOAT,以便可以对该属性执行MAX()。 我该怎么做呢?每次我尝试通过phpMyAdmin中的GUI进行此操作时,我所有的值都会自动四舍五入为0和1s。 请帮我! 问题答案: 我认

  • 问题内容: 是具有值“ true”和“ false”的列。我需要将其转换为位列。 当我尝试这样做时: 它显示一个错误 问题答案: 我怀疑在字段“ Flag1”中除了“ true”和“ false”以外还有其他值。因此,请检查Flag1中的值。 从YouTable中选择不同的Flag1。 这是我的证明: 它工作正常。 但是,这将产生相同的错误。 ->消息245,级别16,状态1,第2行,将varch