SQL 服务器 2012 - Convert(varchar,'2018-12-16 17:33:29',105) + ' ' Convert(varchar,'2018-12-16 17:33:29',108) 是没有显示正确的数据
SQL Server 2012 - Convert(varchar,'2018-12-16 17:33:29',105) + ' ' Convert(varchar,'2018-12-16 17:33:29',108) is not showing correct data
我有一个 datetime
数据类型列,数据格式为“16-12-2018 17:33:29” (dd-mm-yyyy hh:mm:ss)。因此,如果我将输入数据作为 2018-12-16 17:33:29,则需要将数据转换为“16-12-2018 17:33:29”。
这是我一直在尝试的数据类型转换,
SELECT
CONVERT(VARCHAR(10), '2018-12-16 17:33:29', 105) + ' ' +
CONVERT(VARCHAR(10), '2018-12-16 17:33:29', 108)
输出为:2018-12-16 2018-12-16
但如果我使用 Getdate()
而不是硬编码值,我将获得预期的数据格式:
SELECT
CONVERT(VARCHAR(10), GETDATE(), 105) + ' ' +
CONVERT(VARCHAR(10), GETDATE(), 108)
输出为:16-12-2018 17:36:18
我的问题是,如果我们使用 getdate()
而不是硬编码值,为什么相同的数据类型转换查询有效?
您的第二个查询将日期值作为第二个参数。您的第一个查询只有一个字符串。
就 SQL 而言,该字符串看起来像日期这一事实并不重要。
编辑。
当您的列具有日期时间类型时,请使用日期时间值来传输数据。尽量远离字符串。
我有一个 datetime
数据类型列,数据格式为“16-12-2018 17:33:29” (dd-mm-yyyy hh:mm:ss)。因此,如果我将输入数据作为 2018-12-16 17:33:29,则需要将数据转换为“16-12-2018 17:33:29”。
这是我一直在尝试的数据类型转换,
SELECT
CONVERT(VARCHAR(10), '2018-12-16 17:33:29', 105) + ' ' +
CONVERT(VARCHAR(10), '2018-12-16 17:33:29', 108)
输出为:2018-12-16 2018-12-16
但如果我使用 Getdate()
而不是硬编码值,我将获得预期的数据格式:
SELECT
CONVERT(VARCHAR(10), GETDATE(), 105) + ' ' +
CONVERT(VARCHAR(10), GETDATE(), 108)
输出为:16-12-2018 17:36:18
我的问题是,如果我们使用 getdate()
而不是硬编码值,为什么相同的数据类型转换查询有效?
您的第二个查询将日期值作为第二个参数。您的第一个查询只有一个字符串。
就 SQL 而言,该字符串看起来像日期这一事实并不重要。
编辑。 当您的列具有日期时间类型时,请使用日期时间值来传输数据。尽量远离字符串。