我对SQL很新,不再那么新了。
我只是好奇......我只是想知道为什么我在Date
次转化时看到了不一致。
为什么有些开发者会使用:
SELECT CONVERT(CHAR(10), GETDATE(), 101)
==>这对我有意义:
05/24/1987 10 chars
有些使用:
SELECT CONVERT(CHAR(12), GETDATE(), 101)
有人可以打破这个吗?我们是否只是小心翼翼地使用前导/尾随空格?
我甚至见过:
SELECT CONVERT(CHAR(15), GETDATE(), 101)
为什么有人会用这个?
答案 0 :(得分:2)
如果您希望数据作为字符串尽可能细,可以使用此日期字符串命令:
CONVERT(CHAR(10), GETDATE(), 20)
我认为没有任何充分的理由在最后使用101而不是20。
如果您希望数据尽可能细,如果日期仍然是日期(而不是字符串)并不重要,可以使用此命令:
convert(date, GETDATE())
最终,最终结果是每个日期几乎相同 - 每个日期的唯一值。
我猜一些开发人员可能会为某些个人表达或其他东西包含尾随空格 - 或者说,做一些奇怪的事情,以便更容易地追踪他们编写的代码,也许。
SELECT
CONVERT(CHAR(10), GETDATE(), 101) as Datestamp_CHAR10_101
, CONVERT(CHAR(10), GETDATE(), 20) as Datestamp_CHAR20_20 -- imho, the best way to store a date as a string
, CONVERT(CHAR(12), GETDATE(), 101) as Datestamp_CHAR12_101
, CONVERT(CHAR(15), GETDATE(), 101) as Datestamp_CHAR15_101
, CONVERT(CHAR(23), GETDATE(), 121) as Datestamp_CHAR25_131
, DATALENGTH(CONVERT(CHAR(10), GETDATE(), 101)) as DATALENGTH_CHAR10_101 -- 10
, DATALENGTH(CONVERT(CHAR(10), GETDATE(), 20)) as DATALENGTH_CHAR20_20 -- 10
, DATALENGTH(CONVERT(CHAR(12), GETDATE(), 101)) as DATALENGTH_CHAR12_101 -- 12
, DATALENGTH(CONVERT(CHAR(15), GETDATE(), 101)) as DATALENGTH_CHAR15_101 -- 15
, DATALENGTH(CONVERT(CHAR(23), GETDATE(), 121)) as DATALENGTH_CHAR25_131 -- 23
, GETDATE()
, convert(date, GETDATE()) -- Probably the best answer. Why change the data to a string ..?
, DATALENGTH(GETDATE() ) -- 8
, DATALENGTH(convert(date, GETDATE()) ) -- 3
答案 1 :(得分:0)
看看这里:https://msdn.microsoft.com/en-us/library/ms187928.aspx
你会看到世纪(yyyy)或(yy)是你的长度方差。
用101;长度为10,进行转换(12或转换(15不是必需的)
以下是一个很好的示例:http://www.sql-server-helper.com/tips/date-formats.aspx