[英]Convert varchar column to datetime in sql server
我有一個表,其中包含以下定義和數據。
定義:
CREATE TABLE [dbo].[TestTB]
(
[CREATEDATE] [nvarchar](50) NULL
) ON [PRIMARY]
數據:
10/9/2014
1/26/2015
2/16/2015
當我運行查詢時:
Select
CAST(CREATEDATE AS DATETIME) as CREATEDATE
FROM
[dbo].[TestTB]
它拋出錯誤:
消息241,級別16,狀態1,第1行
從字符串轉換日期和/或時間時轉換失敗。
即使運行后以上也不起作用
SET DATEFORMAT dmy
但是下面的查詢工作正常
DECLARE @data nvarchar(50)
SET @data = ' 10/9/2014 '
Select CAST(@data as DateTime)
以上查詢返回:2014-10-09 00:00:00.000
如何將存儲在列中的日期字符串(格式為mm / dd / yyyy)轉換為datetime?
首先,如果您的表列是“ DateTime”類型,則無論您是否將其轉換為日期,它都會以“ 2014-10-09 00:00:00.000”格式保存數據。 但是,如果不是這樣,並且如果您的SQL Server版本為2008或更高版本,則可以使用此版本,
DECLARE @data nvarchar(50)
SET @data = '10/9/2014'
IF(ISDATE(@data)>0)
BEGIN
SELECT CONVERT(DATE, @data)
END
除此以外
DECLARE @data nvarchar(50)
SET @data = '10/9/2014'
IF(ISDATE(@data)>0)
BEGIN
SELECT CONVERT(DATETIME, @data)
END
INSERT INTO dbo.YourTable
SELECT CREATEDATE FROM
(
SELECT
(CASE WHEN (ISDATE(@data) > 0) THEN CONVERT(DATE, CREATEDATE)
ELSE CONVERT(DATE, '01/01/1900') END) as CREATEDATE
FROM
[dbo].[TestTB]
) AS Temp
WHERE
CREATEDATE <> CONVERT(DATE, '01/01/1900')
DECLARE @data nvarchar(50)
SET @data = ' 10/9/2014 '
SELECT CONVERT(datetime, @data, 101)
SELECT CONVERT(datetime, CREATEDATE, 101) as CREATEDATE
FROM [dbo].[TestTB]
http://www.sqlfiddle.com/#!6/f2103
請檢查此http://msdn.microsoft.com/en-us/library/aa226054%28SQL.80%29.aspx
試試看:
SELECT IIF(ISDATE(CREATEDATE) = 1, CONVERT(DATETIME, CREATEDATE, 110), CREATEDATE) as DT_CreateDate
FROM [dbo].[TestTB]
nvarchar到datetime是隱式轉換,這意味着您可以執行以下操作:
declare @strDate nvarchar(50), @myDate datetime
set @strDate = '01/26/2013'
set @myDate = @strDate
但是您的問題是日期格式,因此您必須對其進行轉換,但是您必須具體說明格式或樣式,並且所使用的樣式的代碼是101(根據此表 ),因此安全的方法是:
declare @strDate nvarchar(50), @myDate datetime
set @strDate = '01/26/2013'
set @myDate = CONVERT(DATETIME, @strDate, 101)
您可以跳過代碼,但是如果使用不同的配置(服務器),則代碼將中斷。 如果您使用ISO樣式(yyyymmdd),則無需擔心,轉換將是隱式的:
declare @strDate nvarchar(50), @myDate datetime
set @strDate = '20150421' --ISO style (yyyymmdd)
set @myDate = @strDate
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.