我正在从外部Access数据库中检索数据。在这个数据库中,有一个列字段“recordTime
”的格式如下dd/mm/yyyy hh:nn:ss AM/PM
,但是该字段的类型是字符串(不要问我为什么不使用日期/时间,我可以控制不了这个。
现在我想更新此列字段以使其为yyyy-mm-dd hh:nn:ss
,并且可能仍为字符串类型。我使用这样的查询:
UPDATE table1
SET recordTime = Format(recordTime, 'dd/mm/yyyy hh:nn:ss AM/PM');
我做错了吗?
答案 0 :(得分:0)
由于您的列是string类型,因此您必须使用子串(如ms-access语法,如果您在access DB中工作)
SET recordTime= mid(recordTime,7,4) & "-" & mid(recordTime,4,2) & "-" & left(recordTime,2) & " " & mid(recordTime,12,8)
MS-SQL语法
SET recordTime= SUBSTRING(recordTime,7,4)+'-'+SUBSTRING(recordTime,4,2)+'-'+ LEFT(recordTime,2)+' '+SUBSTRING(recordTime,12,8)
答案 1 :(得分:0)
更新在MS Access中,默认日期格式为mm/dd/yyyy
,因此在重新格式化之前,您必须通过交换dd
和mm
部分来消除日期值的歧义。
UPDATE Table1
SET recordTime = FORMAT(MID(recordTime, 4, 2) + '/' +
LEFT(recordTime, 2) +
MID(recordTime, 6), 'yyyy-mm-dd hh:nn:ss')
WHERE recordTime LIKE '##/##/####*'
如果您最初的值为
11/09/2013 04:00:00 PM 23/09/2013 02:00:00 PM
然后在更新后你会得到
2013-09-11 16:00:00 2013-09-23 14:00:00