我想将日期和时间的字符串更新/转换为SQL日期和时间格式,即它看起来完全一样,但它不会读作nvarchar,而是日期和时间。
Date Time
20-10-2019 12:00:00
20-10-2019 11:00:00
20-10-2019 10:00:00
20-10-2019 09:00:00
20-10-2019 08:00:00
20-10-2019 07:00:00
我使用熊猫从站点收集了这些数据,将其转换为数据框,然后将其插入MSSQL服务器中,该服务器已经创建了一个表。
到目前为止,我做到了
SELECT CONVERT (date,'19-10-2019') as Date
SELECT CONVERT (time,'17:00:00',120) as Time;
但这只能转换一个列,而我想转换整个列,并将其另存为另一列(我也做到了)。
alter table <table_name>
add <col_name> date
alter table <table_name>
add <col_name> time
任何人都可以帮忙,因为我在网上搜索了一段时间,并且无法获得适当的结果,而且我大多会收到此错误:
'''从字符串转换日期和/或时间时转换失败。'
答案 0 :(得分:0)
您可以按样式105转换日期。CAST and CONVERT
CONVERT(DATE, '20-10-2019', 105), CONVERT(TIME, '12:00:00')
并用于更新所有行
UPDATE table SET NewDateColumn = CONVERT(DATE, [Date], 105),
NewTimeColumn = CONVERT(TIME, [Time])
答案 1 :(得分:0)
要将字符串日期或时间转换为日期和时间格式,
SELECT TRY_CONVERT(date, '20-10-2019', 105) as [Date], TRY_CAST('12:00:00' AS TIME) as [Time]
要更新
UPDATE table SET datecol = TRY_CONVERT(DATE, DateString, 105),
timecol = TRY_CAST(TimeString AS time)
答案 2 :(得分:0)
首先,列中的数据不正确。您应该找到那个。您可以使用:
SELECT t.*
FROM t
WHRE TRY_CONVERT(date, t.datecol) IS NULL OR
TRY_CONVERT(time, t.timecol) IS NULL;
注意:您可能想为date
转换添加格式,但是如果默认方法有效(如您所愿),则可能没有必要。
一旦数据固定,或者您决定对NULL
值的不良值感到满意,那么您有两种选择。
您可以添加计算列:
alter table t add real_date as (try_convert(date, t.datecol));
alter table t add real_time as (try_convert(time, t.timecol));
或者,您可以在适当位置更改列:
-- first convert to default string formats
update t
set datecol = try_convert(date, t.datecol),
timecol = try_convert(time, t.timecol);
-- then alter the types
alter t alter column datecol date;
alter t alter column timecol time;