【问题标题】:How to parse date format 'MMM d yyyy' generated in SQL Server in Kendo?如何解析 Kendo 中 SQL Server 中生成的日期格式“MMM d yyyy”?
【发布时间】:2017-09-06 15:49:08
【问题描述】:

我们正在使用 SQL Server 生成一些数据其中一列是日期,它被定义为“MMM d yyyy”。因此,可能的值是:

Jan  1 2017
Jan 21 2017
Jan 12 2017
...

请注意,第一个样本中的“Jan”和“1”之间有 2 个空格。我们如何在 Kendo Grid 中解析这个日期?

kendo.parseDate 似乎不支持这种格式。

我们的计划是改变 SQL Server 的输出,但是想看看剑道方面是否有一些简单的方法来做到这一点。

谢谢

【问题讨论】:

  • SQL Server 中的Date 列是什么数据类型?
  • 在剑道网格中?类型是日期。在 SQL 中,是 VARCHAR(11)
  • 最好的解决办法是停止将日期存储为字符串。这就是我们有日期和日期时间数据类型的原因。
  • 它不存储在 SQL 中,输出为 VARCHAR(11) 用于格式化。
  • 所以在您的 SQL 数据库中,您有一条记录,其值为 2017-01-01,对吗?您正试图在剑道网格中将此值显示为Jan 1 2017,对吗?

标签: sql-server kendo-ui kendo-grid


【解决方案1】:

已经有一段时间了,但也许这可能会有所帮助

示例

kendo.parseDate(new Date("Jan  1 2017"), "MM/dd/yyyy");

在我的脑海里,

  1. 在 SQL Server 中将日期存储为日期更有意义。信任字符串会导致太多事情出错。
  2. 在 SQL Server 中使用 convert() 或 if 2012+ try_convert() 转换字符串是一件小事。

示例

Declare @YourTable Table ([DateStr] varchar(50))
Insert Into @YourTable Values 
 ('Jan  1 2017')
,('Jan 21 2017')
,('Jan 12 2017')

Select *
      ,AsDate = try_convert(date,DateStr) 
 From @YourTable

退货

DateStr       AsDate
Jan  1 2017   2017-01-01
Jan 21 2017   2017-01-21
Jan 12 2017   2017-01-12

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 2022-09-30
    相关资源
    最近更新 更多