# Convert Union{Missing, String31} to DateTime

**URL:** <https://discourse.julialang.org/t/convert-union-missing-string31-to-datetime/122952>\
**Category:** New to Julia\
**Created:** [November 22, 2024, 11:35am UTC](https://discourse.julialang.org/t/convert-union-missing-string31-to-datetime/122952 "2024-11-22T11:35:08Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sounak\_Ghosh](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sounak_ghosh/32/213611_2.png) [@Sounak\_Ghosh](https://discourse.julialang.org/u/Sounak_Ghosh)\
**Post date:** [November 22, 2024, 11:35am UTC](https://discourse.julialang.org/t/convert-union-missing-string31-to-datetime/122952/1 "2024-11-22T11:35:08Z")

</div>

I have dataframe with a column which has some string values and some missing values. I wanted to convert this column into a DataTime column.  
I have used the following code  
df.dt = DateTime.(df.dt, dateformat"yyyy-mm-dd HH:MM:SS")

I am getting a MethodError: no method matching Int64(::Vector{Union{Missing, String31}})

---

<div class="post-metadata">

**Author:** ![Rudi79](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rudi79/32/3884_2.png) [@Rudi79](https://discourse.julialang.org/u/Rudi79)\
**Post date:** [November 22, 2024, 12:05pm UTC](https://discourse.julialang.org/t/convert-union-missing-string31-to-datetime/122952/2 "2024-11-22T12:05:04Z")

</div>

Does

```julia
using Missings, Date, DataFrames
df.dt = passmissing(DateTime).(df.dt, dateformat"yyyy-mm-dd HH:MM:SS")

```

work for you?  
Typing ?passmissing in the REPL will give you the corresponding help.

---

<div class="post-metadata">

**Author:** ![drizk1](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/drizk1/32/208422_2.png) [@drizk1](https://discourse.julialang.org/u/drizk1)\
**Post date:** [November 22, 2024, 12:42pm UTC](https://discourse.julialang.org/t/convert-union-missing-string31-to-datetime/122952/3 "2024-11-22T12:42:12Z")

</div>

You can use TidierDates.jl which leverages (and rexports) Dates.jl and will returning missing where a vector has a missing entry

```julia
using TidierDates
ymd_hms.(DF.col)

```

```julia
ymd_hms("2023-06-15 09:30:00")
2023-06-15T09:30:00

```

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [November 22, 2024, 2:02pm UTC](https://discourse.julialang.org/t/convert-union-missing-string31-to-datetime/122952/4 "2024-11-22T14:02:44Z")

</div>

It seems to me your problem is something else, what’s `eltyp(df.dt)`?

If you just had missing you’d get:

```julia
julia> DateTime.(["2020-01-01 00:00:00", missing], dateformat"yyyy-mm-dd HH:MM:SS")
ERROR: MethodError: no method matching Int64(::Missing)

```

but it appears you have vectors inside your vector, because your error message is:

```julia
julia> DateTime.(["2020-01-01 00:00:00", ["a", missing]], "yyyy-mm-dd HH:MM:SS")
ERROR: MethodError: no method matching Int64(::Vector{Union{Missing, String}})

```

so you need to figure out where those vectors come from, and then you can do `passmissing` as Rudi suggests once you’ve isolated the missings to scalar values.
