Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何从varchar获取日期_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

Sql server 如何从varchar获取日期

Sql server 如何从varchar获取日期,sql-server,sql-server-2008,tsql,Sql Server,Sql Server 2008,Tsql,检索我想要的数据时遇到问题。我有一个包含各种信息的Varchar列。我只想从该栏中提取日期。然而,我一直不成功。我使用了下面的SQL(2008)来获取下面的数据,但是我似乎不能只获取日期而不获取时间。显然,日期和时间处于不同的位置。希望你能帮忙 SELECT substring(Data, 8, 17) from mastInfo 9/25/2013 12:36:5 Jul 8 2013 11:40 9/25/2013 12:43:5 如果要将其转换为日期时间,请使用: SEL

检索我想要的数据时遇到问题。我有一个包含各种信息的Varchar列。我只想从该栏中提取日期。然而,我一直不成功。我使用了下面的SQL(2008)来获取下面的数据,但是我似乎不能只获取日期而不获取时间。显然,日期和时间处于不同的位置。希望你能帮忙

  SELECT substring(Data, 8, 17)
   from mastInfo


9/25/2013 12:36:5
Jul  8 2013 11:40
9/25/2013 12:43:5

如果要将其转换为日期时间,请使用:

SELECT CONVERT(Datetime, '2011-09-28 18:01:00', 120) -- to convert it to Datetime
如果你想得到时间:

SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), '2011-09-28 18:01:00', 100), 7))
如果您想要日期部分:

SELECT  CONVERT (DATE, GETDATE())

如果要将其转换为日期时间,请使用:

SELECT CONVERT(Datetime, '2011-09-28 18:01:00', 120) -- to convert it to Datetime
如果你想得到时间:

SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), '2011-09-28 18:01:00', 100), 7))
如果您想要日期部分:

SELECT  CONVERT (DATE, GETDATE())

什么版本的sql server

你能试试这个吗

选择转换(日期,子字符串(数据,8,17))
从mastInfo查看sql server的哪个版本

你能试试这个吗

选择转换(日期,子字符串(数据,8,17))
从mastInfo

如果您使用的是SQL Server 2012或更高版本,则可以使用

这是我的建议

下面是一个示例(来自上面的SQLFIDLE):

结果如下:

DATEASDATETIME                      DATEASSTRING
September, 25 2013 12:36:05+0000    9/25/2013 12:36:5
September, 25 2013 12:43:05+0000    9/25/2013 12:43:5
July, 08 2013 11:40:00+0000         Jul 8 2013 11:40

如果您使用的是SQL Server 2012或更新版本,则可以使用

这是我的建议

下面是一个示例(来自上面的SQLFIDLE):

结果如下:

DATEASDATETIME                      DATEASSTRING
September, 25 2013 12:36:05+0000    9/25/2013 12:36:5
September, 25 2013 12:43:05+0000    9/25/2013 12:43:5
July, 08 2013 11:40:00+0000         Jul 8 2013 11:40
因为您是从字符串开始的,所以它可能不代表有效日期。当字符串可以转换为日期时,使用IsDate函数将返回1。基本上,这段代码会将那些可以转换的值转换为日期,对于那些不能转换为有效日期的值,会返回NULL


因为您是从字符串开始的,所以它可能不代表有效日期。当字符串可以转换为日期时,使用IsDate函数将返回1。基本上,这段代码会将那些可以转换的值转换为日期,对于那些不能转换为有效日期的值,它会返回NULL。

首先将Varchar转换为DateTime,然后再以所需的日期格式(如101102103)将其转换为Varchar

试试这个:

 select convert(varchar(50),convert(datetime,'9/25/2013 12:43:5'),101)

首先将Varchar转换为DateTime,然后再将其转换为所需的日期格式,如101102103

试试这个:

 select convert(varchar(50),convert(datetime,'9/25/2013 12:43:5'),101)

我正在使用SQLServer2008。执行此操作时,会出现以下错误:“从字符串转换日期和/或时间时转换失败。”听起来像是解析问题?子字符串(数据,8,17)是否总是返回日期?我使用的是SQL Server 2008。执行此操作时,会出现以下错误:“从字符串转换日期和/或时间时转换失败。”听起来像是解析问题?子字符串(数据,8,17)是否总是返回日期?我实际使用的是SQl 2008。我实际使用的是SQl 2008。我仍然收到以下消息:“从字符串转换日期和/或时间时,转换失败。”。我相信我尝试了很多方法来获取这些数据,但这似乎是不可能的。我很抱歉,但是我的括号放错了位置。请再试一次。顺便说一下,我刚刚在一个SQL-2008实例上测试了它,它按照您希望的方式工作。此代码检查字符串是否可以在转换之前进行转换(类似于仅适用于SQL-2012(及更高版本)的try_convert答案)。我仍然收到以下消息:“从字符串转换日期和/或时间时,转换失败。”。我相信我尝试了许多方法来获取此数据,但似乎不可能。很抱歉,我的右括号位置错误。请重试。顺便说一句,我刚刚在SQL-2008实例上测试了此方法,结果是这样的这段代码检查字符串在转换之前是否可以转换(类似于仅适用于SQL-2012(及更高版本)的try_convert答案)。