github.com/mithrandie/csvq@v1.18.1/docs/_posts/2006-01-02-datetime-functions.md (about) 1 --- 2 layout: default 3 title: Datetime Functions - Reference Manual - csvq 4 category: reference 5 --- 6 7 # Datetime Functions 8 9 | name | description | 10 | :- | :- | 11 | [NOW](#now) | Return a datetime value of current date and time | 12 | [DATETIME_FORMAT](#datetime_format) | Format a datetime | 13 | [YEAR](#year) | Return year of a datetime | 14 | [MONTH](#month) | Return month of a datetime | 15 | [DAY](#day) | Return day of a datetime | 16 | [HOUR](#hour) | Return hour of a datetime | 17 | [MINUTE](#minute) | Return minute of a datetime | 18 | [SECOND](#second) | Return second of a datetime | 19 | [MILLISECOND](#millisecond) | Return millisecond of a datetime | 20 | [MICROSECOND](#microsecond) | Return microsecond of a datetime | 21 | [NANOSECOND](#nanosecond) | Return nanosecond of a datetime | 22 | [WEEKDAY](#weekday) | Return weekday number of a datetime | 23 | [UNIX_TIME](#unix_time) | Return Unix time of a datetime | 24 | [UNIX_NANO_TIME](#unix_nano_time) | Return Unix nano time of a datetime | 25 | [DAY_OF_YEAR](#day_of_year) | Return day of year of a datetime | 26 | [WEEK_OF_YEAR](#week_of_year) | Return week number of year of a datetime | 27 | [ADD_YEAR](#add_year) | Add years to a datetime | 28 | [ADD_MONTH](#add_month) | Add monthes to a datetime | 29 | [ADD_DAY](#add_day) | Add days to a datetime | 30 | [ADD_HOUR](#add_hour) | Add hours to a datetime | 31 | [ADD_MINUTE](#add_minute) | Add minutes to a datetime | 32 | [ADD_SECOND](#add_second) | Add seconds to a datetime | 33 | [ADD_MILLI](#add_milli) | Add milliseconds to a datetime | 34 | [ADD_MICRO](#add_micro) | Add microseconds to a datetime | 35 | [ADD_NANO](#add_nano) | Add nanoseconds to a datetime | 36 | [TRUNC_MONTH](#trunc_month) | Truncate time information less than 1 year from a datetime | 37 | [TRUNC_DAY](#trunc_day) | Truncate time information less than 1 month from a datetime | 38 | [TRUNC_TIME](#trunc_time) | Truncate time information less than 1 day from a datetime | 39 | [TRUNC_HOUR](#trunc_time) | Alias for TRUNC_TIME | 40 | [TRUNC_MINUTE](#trunc_minute) | Truncate time information less than 1 hour from a datetime | 41 | [TRUNC_SECOND](#trunc_second) | Truncate time information less than 1 minute from a datetime | 42 | [TRUNC_MILLI](#trunc_milli) | Truncate time information less than 1 second from a datetime | 43 | [TRUNC_MICRO](#trunc_micro) | Truncate time information less than 1 millisecond from a datetime | 44 | [TRUNC_NANO](#trunc_nano) | Truncate time information less than 1 microsecond from a datetime | 45 | [DATE_DIFF](#date_diff) | Return the difference of days between two datetime values | 46 | [TIME_DIFF](#time_diff) | Return the difference of time between two datetime values as seconds | 47 | [TIME_NANO_DIFF](#time_nano_diff) | Return the difference of time between two datetime values as nanoseconds | 48 | [UTC](#utc) | Return a datetime in UTC | 49 | [MILLI_TO_DATETIME](#milli_to_datetime) | Convert an integer representing Unix milliseconds to a datetime | 50 | [NANO_TO_DATETIME](#nano_to_datetime) | Convert an integer representing Unix nano time to a datetime | 51 52 ## Definitions 53 54 ### NOW 55 {: #now} 56 57 ``` 58 NOW() 59 ``` 60 61 _return_ 62 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 63 64 Returns a datetime value of current date and time. 65 In a single query, every this function returns the same value. 66 67 ### DATETIME_FORMAT 68 {: #datetime_format} 69 70 ``` 71 DATETIME_FORMAT(datetime, format) 72 ``` 73 74 _datetime_ 75 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 76 77 _format_ 78 : [string]({{ '/reference/value.html#string' | relative_url }}) 79 80 _return_ 81 : [string]({{ '/reference/value.html#string' | relative_url }}) 82 83 Formats _datetime_ according to _format_. 84 85 #### Format Placeholders 86 87 | placeholder | replacement value | 88 | :- | :- | 89 | %a | Abbreviation of week name (Sun, Mon, ...) | 90 | %b | Abbreviation of month name (Jan, Feb, ...) | 91 | %c | Month number (0 - 12) | 92 | %d | Day of month in two digits (01 - 31) | 93 | %E | Day of month padding with a underscore (_1 - 31) | 94 | %e | Day of month (1 - 31) | 95 | %F | Microseconds that drops trailing zeros (empty - .999999) | 96 | %f | Microseconds (.000000 - .999999) | 97 | %H | Hour in 24-hour (00 - 23) | 98 | %h | Hour in two digits 12-hour (01 - 12) | 99 | %i | Minute in two digits (00 - 59) | 100 | %l | Hour in 12-hour (1 - 12) | 101 | %M | Month name (January, February, ...) | 102 | %m | Month number with two digits (01 - 12) | 103 | %N | Nanoseconds that drops trailing zeros (empty - .999999999) | 104 | %n | Nanoseconds (.000000000 - .999999999) | 105 | %p | Period in a day (AM or PM) | 106 | %r | Time with a period (%H:%i:%s %p) | 107 | %s | Second in two digits (00 - 59) | 108 | %T | Time (%H:%i:%s) | 109 | %W | Week name (Sunday, Monday, ...) | 110 | %Y | Year in four digits | 111 | %y | Year in two digits | 112 | %Z | Time zone in time difference | 113 | %z | Abbreviation of Time zone name | 114 | %% | '%' | 115 116 > You can also use [the Time Layout of the Go Lang](https://golang.org/pkg/time/#Time.Format) as a format. 117 118 ### YEAR 119 {: #year} 120 121 ``` 122 YEAR(datetime) 123 ``` 124 125 _datetime_ 126 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 127 128 _return_ 129 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 130 131 Returns the year of _datetime_ as an integer. 132 133 ### MONTH 134 {: #month} 135 136 ``` 137 MONTH(datetime) 138 ``` 139 140 _datetime_ 141 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 142 143 _return_ 144 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 145 146 Returns the month number of _datetime_ as an integer. 147 148 ### DAY 149 {: #day} 150 151 ``` 152 DAY(datetime) 153 ``` 154 155 _datetime_ 156 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 157 158 _return_ 159 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 160 161 Returns the day of month of _datetime_ as an integer. 162 163 ### HOUR 164 {: #hour} 165 166 ``` 167 HOUR(datetime) 168 ``` 169 170 _datetime_ 171 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 172 173 _return_ 174 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 175 176 Returns the hour of _datetime_ as an integer. 177 178 ### MINUTE 179 {: #minute} 180 181 ``` 182 MINUTE(datetime) 183 ``` 184 185 _datetime_ 186 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 187 188 _return_ 189 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 190 191 Returns the minute of _datetime_ as an integer. 192 193 ### SECOND 194 {: #second} 195 196 ``` 197 SECOND(datetime) 198 ``` 199 200 _datetime_ 201 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 202 203 _return_ 204 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 205 206 Returns the seconds of _datetime_ as an integer. 207 208 ### MILLISECOND 209 {: #millisecond} 210 211 ``` 212 MILLISECOND(datetime) 213 ``` 214 215 _datetime_ 216 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 217 218 _return_ 219 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 220 221 Returns the millisecond of _datetime_ as an integer. 222 223 ### MICROSECOND 224 {: #microsecond} 225 226 ``` 227 MICROSECOND(datetime) 228 ``` 229 230 _datetime_ 231 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 232 233 _return_ 234 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 235 236 Returns the microsecond of _datetime_ as an integer. 237 238 ### NANOSECOND 239 {: #nanosecond} 240 241 ``` 242 NANOSECOND(datetime) 243 ``` 244 245 _datetime_ 246 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 247 248 _return_ 249 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 250 251 Returns the nanosecond of _datetime_ as an integer. 252 253 ### WEEKDAY 254 {: #weekday} 255 256 ``` 257 WEEKDAY(datetime) 258 ``` 259 260 _datetime_ 261 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 262 263 _return_ 264 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 265 266 Returns the weekday number of _datetime_ as an integer. 267 268 #### Weekday number 269 270 | weekday | number | 271 | :- | :- | 272 | Sunday | 0 | 273 | Monday | 1 | 274 | Tuesday | 2 | 275 | Wednesday | 3 | 276 | Thursday | 4 | 277 | Friday | 5 | 278 | Saturday | 6 | 279 280 ### UNIX_TIME 281 {: #unix_time} 282 283 ``` 284 UNIX_TIME(datetime) 285 ``` 286 287 _datetime_ 288 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 289 290 _return_ 291 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 292 293 Returns the number of seconds elapsed since January 1, 1970 UTC of _datetime_ as an integer. 294 295 ### UNIX_NANO_TIME 296 {: #unix_nano_time} 297 298 ``` 299 UNIX_NANO_TIME(datetime) 300 ``` 301 302 _datetime_ 303 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 304 305 _return_ 306 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 307 308 Returns the number of nanoseconds elapsed since January 1, 1970 UTC of _datetime_ as an integer. 309 310 ### DAY_OF_YEAR 311 {: #day_of_year} 312 313 ``` 314 DAY_OF_YEAR(datetime) 315 ``` 316 317 _datetime_ 318 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 319 320 _return_ 321 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 322 323 Returns the day of the year of _datetime_ as an integer. 324 325 ### WEEK_OF_YEAR 326 {: #week_of_year} 327 328 ``` 329 WEEK_OF_YEAR(datetime) 330 ``` 331 332 _datetime_ 333 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 334 335 _return_ 336 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 337 338 Returns the week number of the year of _datetime_ as an integer. 339 The week number is in the range from 1 to 53. 340 Jan 01 to Jan 03 of a year might return week 52 or 53 of the last year, and Dec 29 to Dec 31 might return week 1 of the next year. 341 342 ### ADD_YEAR 343 {: #add_year} 344 345 ``` 346 ADD_YEAR(datetime, duration) 347 ``` 348 349 _datetime_ 350 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 351 352 _duration_ 353 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 354 355 _return_ 356 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 357 358 Adds _duration_ years to _datetime_. 359 360 ### ADD_MONTH 361 {: #add_month} 362 363 ``` 364 ADD_MONTH(datetime, duration) 365 ``` 366 367 _datetime_ 368 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 369 370 _duration_ 371 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 372 373 _return_ 374 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 375 376 Adds _duration_ monthes to _datetime_. 377 378 ### ADD_DAY 379 {: #add_day} 380 381 ``` 382 ADD_DAY(datetime, duration) 383 ``` 384 385 _datetime_ 386 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 387 388 _duration_ 389 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 390 391 _return_ 392 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 393 394 Adds _duration_ days to _datetime_. 395 396 ### ADD_HOUR 397 {: #add_hour} 398 399 ``` 400 ADD_HOUR(datetime, duration) 401 ``` 402 403 _datetime_ 404 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 405 406 _duration_ 407 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 408 409 _return_ 410 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 411 412 Adds _duration_ hours to _datetime_. 413 414 ### ADD_MINUTE 415 {: #add_minute} 416 417 ``` 418 ADD_MINUTE(datetime, duration) 419 ``` 420 421 _datetime_ 422 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 423 424 _duration_ 425 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 426 427 _return_ 428 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 429 430 Adds _duration_ minutes to _datetime_. 431 432 ### ADD_SECOND 433 {: #add_second} 434 435 ``` 436 ADD_SECOND(datetime, duration) 437 ``` 438 439 _datetime_ 440 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 441 442 _duration_ 443 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 444 445 _return_ 446 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 447 448 Adds _duration_ seconds to _datetime_. 449 450 ### ADD_MILLI 451 {: #add_milli} 452 453 ``` 454 ADD_MILLI(datetime, duration) 455 ``` 456 457 _datetime_ 458 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 459 460 _duration_ 461 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 462 463 _return_ 464 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 465 466 Adds _duration_ milliseconds to _datetime_. 467 468 ### ADD_MICRO 469 {: #add_micro} 470 471 ``` 472 ADD_MICRO(datetime, duration) 473 ``` 474 475 _datetime_ 476 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 477 478 _duration_ 479 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 480 481 _return_ 482 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 483 484 Adds _duration_ microseconds to _datetime_. 485 486 ### ADD_NANO 487 {: #add_nano} 488 489 ``` 490 ADD_NANO(datetime, duration) 491 ``` 492 493 _datetime_ 494 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 495 496 _duration_ 497 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 498 499 _return_ 500 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 501 502 Adds _duration_ nanoseconds to _datetime_. 503 504 505 ### TRUNC_MONTH 506 {: #trunc_month} 507 508 ``` 509 TRUNC_MONTH(datetime) 510 ``` 511 512 _datetime_ 513 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 514 515 _return_ 516 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 517 518 Truncates time information less than 1 year from _datetime_. 519 520 521 ### TRUNC_DAY 522 {: #trunc_day} 523 524 ``` 525 TRUNC_DAY(datetime) 526 ``` 527 528 _datetime_ 529 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 530 531 _return_ 532 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 533 534 Truncates time information less than 1 month from _datetime_. 535 536 537 ### TRUNC_TIME 538 {: #trunc_time} 539 540 ``` 541 TRUNC_TIME(datetime) 542 ``` 543 544 _datetime_ 545 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 546 547 _return_ 548 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 549 550 Truncates time information less than 1 day from _datetime_. 551 552 553 ### TRUNC_MINUTE 554 {: #trunc_minute} 555 556 ``` 557 TRUNC_MINUTE(datetime) 558 ``` 559 560 _datetime_ 561 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 562 563 _return_ 564 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 565 566 Truncates time information less than 1 hour from _datetime_. 567 568 569 ### TRUNC_SECOND 570 {: #trunc_second} 571 572 ``` 573 TRUNC_SECOND(datetime) 574 ``` 575 576 _datetime_ 577 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 578 579 _return_ 580 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 581 582 Truncates time information less than 1 minute from _datetime_. 583 584 585 ### TRUNC_MILLI 586 {: #trunc_milli} 587 588 ``` 589 TRUNC_MILLI(datetime) 590 ``` 591 592 _datetime_ 593 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 594 595 _return_ 596 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 597 598 Truncates time information less than 1 second from _datetime_. 599 600 601 ### TRUNC_MICRO 602 {: #trunc_micro} 603 604 ``` 605 TRUNC_MICRO(datetime) 606 ``` 607 608 _datetime_ 609 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 610 611 _return_ 612 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 613 614 Truncates time information less than 1 millisecond from _datetime_. 615 616 617 ### TRUNC_NANO 618 {: #trunc_nano} 619 620 ``` 621 TRUNC_NANO(datetime) 622 ``` 623 624 _datetime_ 625 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 626 627 _return_ 628 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 629 630 Truncates time information less than 1 microsecond from _datetime_. 631 632 633 634 ### DATE_DIFF 635 {: #date_diff} 636 637 ``` 638 DATE_DIFF(datetime1, datetime2) 639 ``` 640 641 _datetime1_ 642 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 643 644 _duration2_ 645 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 646 647 _return_ 648 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 649 650 Returns the difference of days between two _datetime_ values. 651 The time information less than 1 day are ignored in the calculation. 652 653 ### TIME_DIFF 654 {: #time_diff} 655 656 ``` 657 TIME_DIFF(datetime1, datetime2) 658 ``` 659 660 _datetime1_ 661 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 662 663 _duration2_ 664 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 665 666 _return_ 667 : [float]({{ '/reference/value.html#float' | relative_url }}) or [integer]({{ '/reference/value.html#integer' | relative_url }}) 668 669 Returns the difference of time between two _datetime_ values as seconds. 670 In the return value, the integer part represents seconds and the fractional part represents nanoseconds. 671 672 ### TIME_NANO_DIFF 673 {: #time_nano_diff} 674 675 ``` 676 TIME_NANO_DIFF(datetime1, datetime2) 677 ``` 678 679 _datetime1_ 680 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 681 682 _duration2_ 683 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 684 685 _return_ 686 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 687 688 Returns the difference of time between two _datetime_ values as nanoseconds. 689 690 ### UTC 691 {: #utc} 692 693 ``` 694 UTC(datetime) 695 ``` 696 697 _datetime_ 698 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 699 700 _return_ 701 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 702 703 Returns the datetime value of _datetime_ in UTC. 704 705 ### MILLI_TO_DATETIME 706 {: #milli_to_datetime} 707 708 ``` 709 MILLI_TO_DATETIME(unix_milliseconds) 710 ``` 711 712 _unix_milliseconds_ 713 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 714 715 _return_ 716 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 717 718 Converts an integer representing Unix milliseconds to a datetime. 719 720 ### NANO_TO_DATETIME 721 {: #nano_to_datetime} 722 723 ``` 724 NANO_TO_DATETIME(unix_nano_time) 725 ``` 726 727 _unix_nano_time_ 728 : [integer]({{ '/reference/value.html#integer' | relative_url }}) 729 730 _return_ 731 : [datetime]({{ '/reference/value.html#datetime' | relative_url }}) 732 733 Converts an integer representing Unix nano time to a datetime.