SQL Server中datetime拼接后格式异常问题及解决
SQL Server生成Cypher语句时日期格式异常的问题与解决
问题现象
我在做学校项目时,需要用SQL Server生成Neo4j的Cypher创建语句。SQL Server中有一张Transfers表,包含datetime类型的DATETIME列:
- 单独执行查询语句:
select DATETIME from TRANSFER,输出格式为2004-05-04 00:00:00.000 - 但使用
concat()拼接生成Cypher语句时,执行:select concat('create (t:Transfer {datetime: ', DATETIME, '});') from TRANSFER,输出却变成了create (t:Transfer {datetime: May 4 2004 12:00AM})
原因分析
使用concat()函数拼接字符串时,SQL Server未被指定日期转换格式,会自动将datetime类型转换为默认的字符串格式,这个默认格式和单独查询时的显示格式不一致,导致生成的Cypher语句日期格式不符合预期。
解决方法
通过convert()函数显式将datetime类型转换为指定格式的字符串,执行以下语句:
select concat('create (t:Transfer {datetime: ', convert(varchar(25), DATETIME, 120), '});') from TRANSFER
执行后输出格式恢复正常:create (t:Transfer {datetime: 2004-05-04 00:00:00});
内容的提问来源于stack exchange,提问作者Diorcula
相关产品推荐
相关产品推荐

