2013-10-18 49 views
0

我在我的智慧結束...希望大家都可以提供幫助。我有一個日期列entryexpire在SQL表,例如:將日期數據類型轉換爲日期時間數據類型並添加靜態時間

2013-04-12 

我需要它的所有值轉換爲datetimeentryexpire24:00:00附加到新的值,例如:

2103-04-12 24:00:00 

我已經嘗試過演員,祕密演員,增加了新的專欄和連接......所有人都失敗了。

+1

你使用了哪個數據庫? SQL Server/MySQL/Oracle?在大多數數據庫中'24:00:00'實際上是'00:00:00'。 – unlimit

+0

您想要更改列的類型,或者您只需要從中選擇並即時轉換爲日期時間? – janos

+0

即時通訊使用sql server 2008和vb.net,並試圖通過查詢字符串通過vb.net來完成。我會很好00:00:00也不受限制,沒有意識到24:00:00是一個問題,謝謝。也janos我還沒有能夠轉換爲日期時間,因爲沒有時間與它關聯。如果我可以將其轉換並添加一個很棒的時間。 – gbb116

回答

0

添加新列col2(日期時間)。問題更新:

update table t1 set col2 = cast(col1, datetime) // db specific function 

拖放列Col1。 重命名COL2到COL1

我的意思是,有做以及的一些其他方法

0

24:00:00是不是真的適合約會的選項 - 你會進入第二天。這裏有一個select語句,你可以使用定製的日期,以您的需求,但對最近的你會得到一天到底是23:59:59.997

DECLARE @MYDATE varchar(50) = '2013-04-12' 

    SELECT DATEADD(DAY,1,DATEADD(Ms,-2, CAST(@MYDATE AS DATETIME))) 

這將返回2013年4月12日23: 59:59.997

或者,你可以有兩種不同的VARCHAR列(這似乎你試過),並詢問他們這樣獲得的日期時間

DECLARE @MYDATE varchar(50) = '2013-04-12' 
declare @mytime varchar(50) = ' 23:59:59.998' 

select CAST(@mydate + @mytime as datetime) 

同樣,使用23:59:59.999導致選擇返回2013-04-13 00:00:00.000。不知道爲什麼。

+0

可能是因爲'datetime'只能應用到[23:59:59.997](http://msdn.microsoft.com/zh-cn/library/ms187819.aspx)。請閱讀[本博客文章](http://sqlblog.com/blogs/aaron_bertrand/archive/2011/10/19/what-do-between-and-the-devil-have-in-common.aspx) - 我避免嘗試添加'結束時間'值;如果OP真的需要這樣的事情,他們最好是存儲實際的第二天,並將其用作唯一的上限(實際上,這是值的實際值)。 –

+0

@folksymAndrew我真的想做的是轉換並添加信息從我的日期列,並使其日期時間00:00:00 這樣的事情,但我知道它的錯誤: 'convert(datetime,[date_datatype_column],121 )+''+ '00:00:00'' ,並將其插入新列或更新原始日期列,這兩者都適用於我。 – gbb116

0

如果有人有同樣的問題,這是我如何解決。我創建了一個字符列 temptime 並使用update命令將值23:59:00添加到數據庫中的所有記錄中。

i,那麼創建另一列作爲日期時間 entryexpiredatetime

與我entryexpiredate作爲char和temptime爲char i列使用@folksymAndrews代碼如下:

塊引用

update [table] set entryexpiredatetime = CAST(ENTRYEXPIREDATE+timetime as datetime)

塊引用

後來我就temptime柱並留下了我原來的entryexpiredate和我需要entryexpiredatetime列。

感謝您的幫助。這是我覺得我可以完成任務的最好方式,但我確定有一種較少的入侵方式。

相關問題