【问题标题】:MS SQL - DB2 TablesMS SQL - DB2 表
【发布时间】:2014-08-26 00:34:18
【问题描述】:

我已经使用 substr 将 SQL 中的 DB2 日期从 yyyymmdd 数字字符串转换为 mm/dd/yyyy,这是我们想要的格式。问题仍未被识别为“真实”日期以进行计算,例如 datedif。

如何将 mm/dd/yyyy 新格式更改为真实日期字段?我有没有把它弄得更复杂?

【问题讨论】:

  • date 列没有“格式”。您用于查询数据的 SQL 工具会应用您看到的任何格式。
  • 查找演员表并转换。它是这些功能之一。
  • 我认为它应该像 yyyy-mm-dd 然后它将在 MS Sql Server 中工作

标签: sql


【解决方案1】:

试试这个....

select convert(datetime,yyyymmdd )

select Cast(yyyymmdd as datetime)

【讨论】:

  • 嗯,所以我不应该用我的 substr 例程操作原始数字字符串 20140601,我应该从一开始就尝试转换或转换函数?
  • 你能详细说明一下你的答案吗?
【解决方案2】:

要将 mm/dd/yyyy 字符串转换为真实日期,请使用:

convert(datetime, your_nonDB2_date_string_here ,101)

更多...

“我有没有让这件事变得更复杂?”是的。 不要将日期存储为字符串,真的就这么简单。

我必须假设您的问题中的“SQL”是指 Microsoft SQL Server(MS 不拥有我所知道的“SQL”)。因此,如果您从 DB2 获取 YYYYMMDD 格式的字符串,这恰好是在 SQL Server 中转换为“真实日期”的最安全格式。

因此,当读入 SQL Sever 表时,请执行以下操作:(112 是 YYYYMMDD 的“样式”)

convert(datetime, your_DB2_date_string_here ,112)

您在上面看到“日期时间”的地方说明您可以在 SQL Server 中使用不同的类型:

date --<< date only (no time)
smalldatetime
datetime
datetime2 --<< highest precision

对于“真实日期字段”的 OUTPUT,您可以再次使用 convert 函数,或者如果您有 SQL 2012 或更高版本,您可以使用 format() 函数

对于输出作为 MM/DD/YYYY 使用

convert(varchar,real_date_field,101)

format(real_date_field,'MM/dd/yyyy') --<< nb case sensitive: MM not mm

见: http://msdn.microsoft.com/en-us/library/ms187928(v=sql.100).aspx http://www.sql-server-helper.com/sql-server-2012/format-function-vs-convert-function.aspx

【讨论】:

    猜你喜欢
    • 2020-01-07
    • 1970-01-01
    • 2013-07-08
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 2018-08-30
    相关资源
    最近更新 更多