在sql中将字符串转换为日期

时间:2015-06-09 06:47:12

标签: sql oracle date type-conversion timestamp-with-timezone

我需要转换 2014-11-18T14:08:43 + 00:00 ,这是我的sql开发人员日期格式中的varchar,以便过滤一些条目。

我试过

to_date(LAST_UPDATE_DATE,'YYYY-MM-DD')

但是它出错了

  

ORA-01830:日期格式图片在转换整个输入之前结束   字符串。

请帮助......

5 个答案:

答案 0 :(得分:0)

declare @varDate as nvarchar(50) = '2014-11-18T14:08:43+00:00'

select CAST(substring(@varDate,0,CHARINDEX('T',@varDate)) as date)

答案 1 :(得分:0)

你可以像这样使用它

declare @Date as nvarchar(100) = '2014-11-18T14:08:43+00:00'
SELECT CONVERT(DATE,@Date) AS Date

或者选择此问题中接受的答案

  

ORA-01830: date format picture ends before converting entire input string / Select sum where date query

答案 2 :(得分:0)

你可以试试这个;

Select CAST ('2014-11-18T14:08:43+00:00' as date)

假设您使用的是SQL Server 2012

答案 3 :(得分:0)

  

ORA-01830:日期格式图片在转换整个输入字符串之前结束。   TO_DATE(LAST_UPDATE_DATE,' YYYY-MM-DD&#39)

2014-11-18T14:08:43+00:00 TIMESTAMP ,而不是 DATE

首先,您永远不会 DATE / TIMSTAMP 存储为字符串。这是一个数据库设计缺陷。

无论如何,您可以将其转换为 TIMESTAMP WITH TIMEZONE

例如,

SQL> SELECT to_timestamp_tz('2014-11-18T14:08:43+00:00',
  2                         'YYYY-MM-DD"T"HH24:MI:SS.FFTZH:TZM')
  3                         AS tm_stamp
  4  FROM dual;

TM_STAMP
----------------------------------------------------------------
18-NOV-14 02.08.43.000000000 PM +00:00

SQL>

答案 4 :(得分:0)

以防你不是故意放置sql server但是你需要使用oracle(看到你正在使用to_date并且你得到了ora例外) 我为您的日期格式添加了日期和时间戳的快速日期时间转换(无毫秒):

SELECT to_Date(concat
               (substr
                (myvar,0,10),
                concat(' ',
                       substr(myvar,12,8)
                      )
               ),'YYYY-MM-DD HH24:mi:ss') AS mydate
FROM mytable

Fiddle